2009-10-25 2 views
3

여기 내 상황이 있습니다. 내 노트북과 서버 모두에 일련의 파일을 보관합니다. rsync를 사용하여 두 위치간에 동기화 설정이 이미 있습니다. 최근에 나는이 파일들의 특정 부분이 소스 제어하에 있어야한다고 결정했다. 나는 이것을 git으로 사용하고 있습니다.git를 사용하는 데 문제가 있습니까?

그래서 내가 rsync를 사용으로 동기화 shared/ 있습니다. 그렇다면 shared/stuff/이 자식 제어하에 있습니다. 로컬 인 저장소의 두 위치에서 git을 사용할 것입니다. 한 번에 하나의 사본으로 만 작업하며 항상 파일을 앞뒤로 동기화합니다.

나는이 파일을 다루는 유일한 사람이다,이 두 위치는이 파일이 존재하는 유일한 장소입니다. 내가 git을 가지고있는 유일한 이유는 단지 오늘 내가 실수로 일부 코드를 삭제하고 다시 가져올 수 없기 때문입니다.

그래서 내 진짜 질문 : rsyncgit을 깰 것이다 어떤 일을합니까? 혹은 그 반대로도?

편집 : 궁금한 분들은 git 대신 rsync를 사용하는 이유는 이미 공유/폴더 동기화를 유지하는 훌륭한 시스템을 갖추고 있기 때문에 git 저장소를 유지하려고합니다. .

답변

4

.

git 객체 : 커밋, 트리 및 블롭은 불변이므로 git 객체 저장소는 로그와 같으므로 "기록을 다시 쓰는"경우에도 아무것도 삭제하지 않고 새 객체 만 기록합니다. git gc 전에는 세상을 멈추고 자두 줍니까. 힘내라 데이터를 잃어 버리게 만듭니다. 저장소가 매우 큰이며, 당신이 그것을 재 포장하는 경우


는 rsync와는 자식이 새로운 큰 팩 파일로 모든 팩 이후 다시 전체 개체 데이터베이스를 전송할 수있다. 재 포장하려는 경우 git repack을 대신 사용하여 이전 객체를 건드리지 않고 새로운 객체에 대한 새로운 팩을 생성 할 수 있습니다. 아니면 한 번 좋은 재 포장, 및 유지에 대한 큰 팩 파일을 표시 할 수 있습니다

당신이 .git/objects/pack-fe017c0e9ea12841cd29458df7bd4421c2b12458.pack라는 팩 파일, 바로 옆에 .keep라는 이름을 만들 경우 : 이제

touch .git/objects/pack-fe017c0e9ea12841cd29458df7bd4421c2b12458.keep 

git gc원 '을 그 팩 파일을 재 작성하지만, 다른 모든 작은 팩과 오브젝트를 취해 함께 수집합니다. git repack의 차이점은 작은 팩 파일 모음을 많이 만들지 않는다는 것입니다.

3

은 당신이 하나의 컴퓨터에있는 저장소를 편집하고 다른 한편으로 편집하기 전에 동기화되므로, 괜찮아 될 것입니다. 아무 문제가 없습니다

+1

하지만 두 가지 큰주의 사항이 있습니다. 특히 다른 항목을 편집하기 전에 동기화해야합니다. git을 사용하여 동기화 (끌어 오기, 푸시)하면 위험을 감수하지 않아도됩니다. 즉 그것이 사용되는 방법입니다. 현재이 기술은 원격 저장소를 로컬 (또는 원격지의 로컬)을 통해 복사하기 때문에 최근 변경 사항을 잃을 위험이 있습니다. –

3

나는이 모든 시간을, 대신 rsync와의 Unison와. 차이점은 실수로 두 시스템에서 무언가를 변경하면 Unison이 문제점을 감지한다는 것입니다. 또한 Unison에는 rsync 알고리즘이 내장되어 있습니다.

+0

유니슨의 한가지 문제점은 내가 rsync로 할 수있는 것처럼 (* nix) 내가 만진 컴퓨터에 설치되는 것에 의존 할 수 없다는 것입니다. –

관련 문제