2012-06-15 3 views
0

제 논문에 git을 사용하고 있습니다. 프로젝트에는 텍스트 파일 (코드, *.tex)과 바이너리 파일 (그림)이 있습니다.git untracked 바이너리 파일을 처리하십시오.

  • 텍스트 파일
  • 바이너리 파일은 자식에 의해 추적되지 않는 자식 저장소에 의해 추적하지만, 같은 디렉토리에 있습니다.

저는 때로는 USB 드라이브를 통해 ssh를 통해 동기화 할 때도 데스크탑과 노트북에서 작업하고 있습니다. 내 문제는이 동기화를 올바르게 처리하는 방법입니다. 코드가있는 경우 git pull, git push 또는 git bundle을 사용합니다. 문제는이 파일에 바이너리 파일이 포함되지 않는다는 것입니다 (예 : 내 데스크톱에서 만든 그림이 노트북으로 전송되지 않으므로 숫자가 없기 때문에 노트북의 latex이 실패합니다). 따라서 현재는 동기화를 위해 rsync을 사용하지만, git을 사용하면 많은 이점이 있습니다.

내가하고 싶은 것 :이 이후 git push 또는 git pull 또는 git bundle

  • 을 할 때

    • git에게 "여기에 몇 가지 바이너리 파일은, 내가 그들을 원하지 않는 바이너리 파일을하고 있습니다 포함하십시오 추적 할 수 있습니다. 즉, 현재 상태 만 복사하고 변경하지 말아야합니다.

    지금까지 해결 방법을 제시 할 수있었습니다 (01 주위에 셸 스크립트 작성 코드의 경우이고 이진 파일 동기화의 경우 rsync입니다. 하지만 이로 인해 어색한 작업이 발생하므로보다 최적의 솔루션을 찾고 있습니다.

    덕분에, 사이먼

  • +1

    바이너리 파일을 추적하고자하지 않는 이유는 무엇입니까? 과도하게 크고 자주 바뀌는가? 두 가지가 아닌 경우 repo에 추가하고 추적합니다. –

    +0

    그들은 자주 변경되지 않지만 업데이트 된 데이터가있는 새로운 버전의 그림으로 세부 사항이 변경됩니다. 단지 약간의 개정이 있더라도 저장소의 크기는 급속하게 폭발 할 것입니다. – Simon

    +0

    추적을 시도하고 상당한 성능 저하를 보았습니까? 100 개의 숫자가 있더라도 TeX에서 처리하는 이미지 형식은 많은 응용 프로그램보다 큰 .git 디렉토리를 생성하지 않습니다. USB 드라이브의 레이턴시가 마음에 들지 않으면 github 또는 bitbucket을 고려 했습니까? 전자는 한 달에 7 달러입니다. 후자는 무료입니다. – Christopher

    답변

    0

    한 가지 가능한 솔루션은 별도의 지점 (아마도? git checkout --orphan <branchname>를 사용하여 고아)과 오직 git commit --amend를 사용에 바이너리 파일을 보관 될 수 있습니다. 해당 지점과 관련된 푸시 및 당기기는 항상 --force을 사용해야하지만 작동 할 수 있습니다.

    이것은 저장소에 약간의 부 풀림을 가져 오지만, 가비지 수집으로 인해 이진 파일의 기록을 보관할 수 없으므로 상한이 있습니다.

    +0

    이것이 어떻게 작동하는지 알지 못합니다. 분리 된 바이너리 브랜치에서 다시 내 소스 브랜치 중 하나로 전환하면 바이너리 브랜치에서 작업하는 동안 추가 한 파일이 더 이상 볼 수 없습니다. – Simon

    0
    아마 일을 이런 식으로 구성 할

    :

    project 
        .git 
        .tex files 
        code files 
        data symlink to ../project-data 
    project-data 
        images, etc 
    

    당신이 패턴 및/또는 저장소 손상을 제외 지나치게 우려 할 필요없이 프로젝트 데이터 디렉토리에 자유롭게 rsync를 사용할 수있는 방법 및 사용 git fetch 및 git push은 주 프로젝트에서 자유롭게 추적 할 수없는 파일의 노이즈에 대해 걱정할 필요가 없습니다. 물론 코드와 .tex 파일은 현재 위치가 아닌 하위 디렉토리에서 가져 오기 위해 약간 수정해야합니다.

    +0

    나는이 솔루션이 완벽하게 잘 작동한다는 것에 동의하지만 아직 해결 방법이있다. 항상 두 가지를해야한다 :'git fetch'와'rsync'. – Simon

    관련 문제