2010-02-26 5 views
11

git의 불가피한 단점 중 하나는 파일에 대한 메타 데이터를 저장하고 검색 할 수 없다는 것입니다. 예를 들어, Mac에서는 레이블이 "확장 속성"(xattr으로 액세스 가능)과 함께 저장되며, checkout/reset/merge/pull 명령은 파일이 체크 아웃의 영향을받는 경우 해당 속성을 지 웁니다.메타 데이터 저장/검색 용 Git 후크

누군가 이미 메타 데이터 저장 스크립트를 작성했는지 확인하기 위해 둘러 보았습니다. 또한 최선을 다하고됩니다 저장소에 저장된 파일에 속성 쓰기, 파일이 최선을 다하고 있습니다 때

  1. 가 읽기 확장 속성을
  2. 을 :

    그래서 내가하고 싶은 무슨 망할 놈의 후크 시스템을 사용하는 것입니다

  3. 병합/체크 아웃/재설정에서 수정 된 파일에 확장 된 특성을 적용합니다.

어떤 후크를 사용해야합니까? post-receivepre-commit이 내가 필요한 모든 것입니까? pre-commit도 커밋에 파일을 추가 할 수 있습니까 (즉, 새 속성을 작성한 후)?

+0

왜 downvote에 저장, 저장 및 파일의 메타 데이터를 복원 할 수있다? 질문이 만족스럽지 않으면 문제를 해결할 수 있도록 의견을 남기십시오. –

답변

3

gibak toolometastore 도구/저장 (선택적 xattrs 포함) 메타 데이터를 복원 할 수 있도록 pre-commitpost-checkout를 사용합니다.

post-receive을 원하지 않습니다. 푸쉬의 먼 끝에서 실행됩니다. 그것은 베어 리포지토리 (bare repositories)를 위해 실행되기 때문에 푸시 된 커밋의 내용에서 파일을 업데이트하려고하는 것이 전혀 없습니다. post-checkout에서 작업 트리를 사용할 수 있음을 알고 계십시오.

+1

사후 병합도 사용해야합니다. githooks (5)를보십시오. http://ftp.kernel.org/pub/software/scm/git/docs/githooks.html –

+0

@Seth Johnson : 좋은 소식입니다. 'post-merge'는'post-checkout'과 같은 종류의 작업을 수행하여 병합이 파일을 다시 작성할 때 잃어버린 메타 데이터를 다시 만들 수 있습니다. 메타 데이터 병합은 선택한 도구의 저장 방식에 따라 까다로울 수 있으며보기/비교를 위해 사용할 수 있습니다. –

+0

다른 사람이 gibak과 같은 도구에 관심이있는 경우 Slug (https://github.com/hbaragar/slug)는 원격 저장소에 백업 할 수있는 최근에 유지 관리 된 gibak 포크처럼 보입니다. – mormegil

0

metastore은 (당신이 당신의 커밋에 포함 할 수 있습니다) 별도의 파일