2010-11-22 4 views
0

내 자식 저장소의 하위 디렉토리를 내보낼 때 보관중인 커밋의 전체 해시를 주어진 파일. 그 이유는 내 고객에게이 코드 (편리하게 정기적으로 내보내기하기에 너무 큰 저장소의 하위 디렉토리)를 배송 한 다음 (git 환경 외부에서) 빌드하고 로그에서 알 수 있기를 원하기 때문입니다. 어떤 버전의 코드가 그것을 생성했는지, 디버깅을 돕기 위해. 그것은 export-subst 속성 .gitattributes에 파일을 추가 할 수 있으며, git archive 실행할 때이있다으로 %H 토큰 교체해야하는 것처럼저장소의 하위 디렉토리를 내보낼 때 export-subst git 속성 사용하기

솔루션이 나타납니다. 그러나 나는이 행동을 보지 않고있다.

저는 Pro Git 책의 한 페이지를 참고 자료로 사용하고 있지만 (here 참고) 저장소의 루트가 아닌 하위 디렉토리와 함께 사용하려고합니다.

내보낼 디렉토리의 이름은 iDevice입니다. Last commit date: $Format:%cd$이 포함 된 hash_test이라는 폴더 아래에 파일을 만들었습니다. git archive --format=tar HEAD:iDevice/ | gzip > test.tar.gz을 실행하면 파일이 수정되지 않습니다. git archive --format=tar HEAD | gzip > test.tar.gz을 실행하면 파일이으로 수정되었습니다.

나는 git 디렉토리의 루트와 .gitattributes 파일을 루트 디렉토리와 서브 디렉토리에 유지하려고 시도했다. 나는이 파일을 .gitattributes 파일에 iDevice/hash_testhash_test으로 참조하려고 시도했다. (내가 kerneltrap.org에있는 버그와 비슷한 것 같아서 --prefix = archive 명령을 혼란스럽게했다./mailarchive/git/2008/4/8/1378004 내가 제대로 연결 하겠지만 더 많은 링크를 게시하는 평판은 없다 ...). 그러나이 중 아무 것도 도움이되지 못했습니다.

의견을 보내 주시면 감사하겠습니다.

답변

3

git-archive의 속성은 보관중인 트리에서 가져옵니다.

  • git archive ... HEAD:iDevice의 속성이의 iDevice에 있어야합니다, 또는 가능성이 볼 수없는이는 것을 의미한다. (나는 이것이 지원되는 것으로 가정하고, 그것을 해 본 적이 없다.)

  • gitattributes 파일이 있어야합니다. 작업 창에있는 항목은 --worktree-attributes 옵션을 git-archive으로 사용하지 않으면 관련이 없습니다.

그리고이 모든 것을 무시할 수있는 제안 : git archive ... HEAD iDevice하지 git archive HEAD:iDevice 사용합니다. 이 명령은 <tree-ish> <path> 인수를 지원합니다. 트리 객체를 직접 지정할 필요가 없습니다.

+1

나는 이미 iDevice 폴더에 내 .gitattributes를 가지고 있는데, 나는 그것을 다 커밋했지만 기쁨은 없었습니다. 귀하의 제안은 ''로 해결되었습니다. 감사! – Rowan

관련 문제