2013-12-19 4 views
1

svn 서버로 푸시 할 때 프로젝트의 zip 아카이브를 만들려고합니다. 필자의 오래된 설정은 원격 git repo에서 post-receive hook을 사용하여이를 수행합니다. 그러나, 지금은 svn을 사용하고있어 거기에 아무것도 넣을 수 없어 svn 서버를 소유하지 않습니다. 나는 다음과 같은 사전 푸시 훅을 설정 한하지만이 git svn dcommit에서 실행되지 않습니다git svn dcommit을 사용하기 전에 어떻게 아카이브를 생성 할 수 있습니까?

$cat .git/hooks/pre-push 
#!/bin/sh 
git archive -o foo_bar.zip --prefix foo_bar/ master 

어떤 아이디어가있는 후크에 내가 사용할 수 있을까?

감사합니다.

답변

1

그런 고리가 없기 때문에 대신 별칭을 만드는 방법은 무엇입니까?

dcm = "!f(){ git archive -o foo_bar.zip --prefix foo_bar/ master; git svn dcommit; }; f" 
+0

좋은. 그것은 작동합니다. 자, 왜 그냥 작동하는지 알아 내기 위해서 git 명령을 쓸어 할 필요가 있습니다. – spinlock

+0

간단합니다, 실제로 : 한 줄짜리 함수가 있습니다.'f() {...; }'을 실행하고,'f' 바로 뒤에 함수를 호출하고 명령을 실행합니다. 이것은 'bash' 구문 btw입니다. – janos

2

git-svn을 사용하고 있습니다. 맞습니까? 당신은 아무 데서도 인용하지 않았기 때문에 당신이 누군지 확신 할 수 없습니다. 그 git-hooks 순수한 svn과 함께 작동하지 않습니다, 당신은 자식을 사용해야합니다! 그것은 분명 할 수 있지만 확신하는 것이 좋습니다.

문제에 관해서는 post-commit 후크를 사용할 수 있습니다. 커밋을 완료하면 문제가 해결됩니다. 이 단점은 당신이 당신의 repo에 zip 파일을 추가하지 않는다는 것입니다.

저장소에 zip이 필요한 경우 pre-commit 후크와 stash 트리를 사용하십시오. 이 트리를 쉽게 보관하고 git 인덱스에 압축 파일을 추가 한 다음 완료!

이 대답은 스크립트 작성에 도움이 될 수 있습니다 : Git archive of repository with uncommitted changes.

+0

나는 이제는 svn 지원을 포함하는 일반 바닐라 자식을 사용하고 있다고 생각합니다. 나는 변화를 저 지르지 않을 때마다 아카이브를 만들지 않기를 바랬다. – spinlock

관련 문제