2014-12-17 7 views
3

Unison (http://www.cis.upenn.edu/~bcpierce/unison/)을 사용하는 사람은 개발 프로젝트를 랩탑과 데스크탑 또는 이와 유사한 방식으로 유지합니까?Git + Unison을 사용하는 개발 환경

유니슨이 나의 자식 repos를 도살 할지도 모른다고 걱정됩니다. MyProject에서 랩톱을 일부 지점에서 체크 아웃하고 바탕 화면을 다른 곳에서 체크 아웃하면 유니슨이 싱크대에서 올바른 작업을 수행 할 수 있습니까? repos가 실행 가능하게 유지되는 한, 어떤 지점이 이길 지 신경 쓰지 않습니다.

기타 제안을 환영합니다. Rsync는 다른 어떤 것도 작동하지 않는다면 대체 될 수 있습니다.

+2

git을 사용하는 것이 잘못된 이유는 무엇입니까? –

+0

ㅎ, 좋은 지적이야. 리모트와 스크립트 가져 오기를 추가 할 수 있습니다. 힘내는 것만 동기화되는 것은 아닙니다. 아마도 자식을위한 자식, 다른 모든 것에 대한 조화. – Brian

답변

1

예, 저는 정기적으로 유니슨을 사용하여 bzr과 git repos를 포함한 모든 프로젝트를 동기화합니다. 그것은 잘 작동합니다. 결과는 git repo를 어딘가에 넣은 다음 다시 가져 오는 것과 같습니다. 그러나 이미 Unison을 사용하고 있다면 저장소를 동기화하는 경우 추가 단계가 필요하지 않습니다. 동기화는 커밋되지 않은 변경 사항도 선택합니다. 푸시 + 끌어 오기는 수행하지 않습니다.

내가 볼 수있는 유일한 문제는 유니슨 프로필에 git repo의 모든 개체를 동기화하지 못하게하는 일부 무시 집합이있는 경우입니다. 나는 그것이 비정상적인 것이라고 생각한다. 그리고 그것은 결코 나에게 일어난 적이 없다.

+1

당신은 이것을 재고해야한다고 생각합니다. 양측에서 일부 파일을 수정했고, 한 쪽에서'git add A '를하고 다른 쪽에서'git add B'를 했는데도'git commit'을하지 않았 으면 어떻게 될까요? Unison은 추가 작업없이 변경 사항을 병합하지 않으므로 상태를 잃을 수 있습니다. 또는 하나의 repo에서 3 개의 커밋을 만들고 다른 하나의 커밋에서 4 개의 커밋을 만든 경우 - 하나의 집합 이러한 커밋 중 하나가 손실 될 것입니다. 또는 Unison의 충돌 해결 질문에 어떻게 대답 하느냐에 따라 손상된 Repo를 얻게 될 것입니다. – twalberg

+0

예, 가능하지만 해결해야하는 다른 동기화 충돌과 다릅니다 . Unison이 두 호스트 모두에서 변경된 파일 (자식 색인)을 발견하면 수행 할 것을 요구할 것입니다. 양쪽에서 변경 사항이 혼합되어있는 것처럼 보이면 항상 한 방향 또는 다른 방향으로 복사하도록 할 수 있습니다. 그리고 git push + pull은 그 경우를 처리하지 않습니다. –

+1

그러나 'git push'또는'git pull '은 위험한 특정 상황에서 작동을 거부하고 상황을 해결하기 위해해야 ​​할 일에 대한 힌트를 제공합니다. 네가 좋은 '자식'인데도 두 개의 다른 리포지토리에있는 다른 지점에서 일하고 있다면, 유니슨은 한 세트의 일을 밟거나 어떤 종류의 일을하려고 할 것이다. 어떤 입력을 주 었는지에 따라 좋아질 것입니다. 물론 두 레포지에서 일하지 않을만큼 충분히 훈련을 받았다면 그걸 가지고 도망 갈 수도 있습니다 ... – twalberg

0

저는 유니슨도 사용하고 있습니다. 잘 작동하고 있습니다. 내가 가지고 있었던 유일한 진짜 문제는 대소 문자 구분과 관련이있었습니다. 필자는 Unison을 Linux 머신과 MacOSX에 설치하여 파일을 동기화했습니다. MacOSX는 기본적으로 대소 문자를 구분하지 않는 파일 시스템을 사용하므로 충돌이 발생합니다. 이 문제를 해결하려면 디스크 유틸리티를 사용하여 읽기/쓰기 디스크 이미지를 만들고이 새로 생성 된 볼륨을 git-repos로 작업하기위한 기본 작업 디렉토리로 사용하십시오.