2011-05-09 4 views
4

특정 조건에서 해당 후속 의 버전 파일을 업데이트하는 책임을 질 후 포스트에 보내고 싶습니다. 그래서, 내 저장소에 파일 version.txt가 있다고 가정하십시오. post.txt 파일을 version.txt 안에 업데이트하려면 후크를 받고 싶습니다.새로운 커밋 및 푸시하기 위해 git post 수신 훅을 사용합니다.

다시 말해서 repo를 다시 시도해야합니다. 이것이 가능한가?

감사합니다.

답변

2

차라리 (내부의 올바른 버전 문자열 즉) 그 version.txt 파일에 대한 올바른 콘텐츠를 생성 할 수있는 추가/푸시를 저지하기 위해 노력하지만, 체크 아웃/업데이트에 위해 filter driver를 사용하지 않을

그것은 version.txt 파일의 내용을 인식 할 수있는 경우

enter image description here

smudge 스크립트 (즉, 그것은 won't have the name/path of said file as parameter), 올바른 정보와 해당 파일의 템플릿 섹션을 대체 할 것이다.

+0

@VonC 수신 리포지토리에 이것을 포함 할 수 있습니까? version.txt를 업데이트하기위한 조건은 중앙/수신 저장소에만 적용될 수 있으므로 필터 드라이버는 로컬 저장소에서 커밋 (및 체크 아웃)하는 동안에 만 적용 할 수 있습니까? – manojlds

+0

@manojolds : 아이디어는 정보를 가지고 파일을 커밋하지 않고, 다운 스트림 레포가 필요할 때마다 적절한 컨텐트를 생성 할 수있는 스크립트를 커밋하는 것입니다. 필터 드라이버는'.gitattributes' 파일의 선언이며, repo 사이에서 복제/전파 될 수 있습니다. 중앙 repo에서 활성화되지는 않았지만 (로컬 사용자에게만 푸시했기 때문에) 로컬 repo에 있어야한다는 사실은 중앙 repo에 추가 커밋이 필요하지 않다는 사실을 변경하지 않습니다. 올바른 컨텐츠를 생성합니다 언제 어디서 실제로 필요할지 알려줍니다. – VonC

+0

굉장합니다. 고마워, VonC. .gitattributes 완벽하게 보인다. – Jacko

2

서버에서 저장소의 작업 디렉토리를 가질 수 있습니다. post-receive에서 git을 작업 디렉토리로 가져 와서 필요에 따라 version.txt를 업데이트하고 커밋하고 푸시합니다. 이렇게하면 수신 후 한 번 더 트리거되므로 조건부 업데이트를 수행하는 방법에주의해야합니다. 그렇지 않으면 주기적으로 진행됩니다.

#!/bin/sh 
unset GIT_DIR 
cd /path/to/repo.wd 
git pull 
echo "new content" > version.txt 
git add version.txt 
git commit -m "updating version.txt" 
git push origin master 
관련 문제