웹 사이트를 게시 할 때 git을 사용하고 있습니다. 워크 플로는 대략 다음과 같습니다git checkout이 너무 많은 파일을 수정합니다.
$ git add my_file
$ git commit -m comment my_file
$ git push # Just house-keeping, goes to my master repo
$ git push ssh://[email protected]//var/www/repo.git
가 웹 서버에 후크를 포스트받을 다음과 같습니다
#!/bin/bash
working=$(pwd)
working=${working##*/}
working=../${working%.*}
while read oldrev newrev ref ; do
branch=$(echo ${ref} | cut -d/ -f3)
GIT_WORK_TREE=${working} git checkout -f ${branch}
done
시간의 대부분이 그냥 잘 작동합니다. 괜찮다고 말하면 하나의 파일을 추가하면 체크 아웃이 하나의 파일을 수정합니다.
하루를 기다린 후 & 커밋을 한 경우에만 수신 후크의 git checkout이 작업 복사본의 모든 파일을 다시 가져옵니다. 나이를 먹을뿐만 아니라 나중에 실행되는 rsync로 엉망이됩니다.
오늘 밤 무슨 일이 일어나서 내일 일어나는 체크 아웃이 오늘 내가 반복해서 반복 할 수있는 일과는 크게 달라 지나요?
에
을 변경. 그래서 나는 항상 내가 마스터에 있음을 언급하면서 자식을 보았다. 그러나 모호성을 없애기 위해 수신 후 후크를 단순화합니다. 가장 큰 문제는 대부분의 경우 작동하지만 마지막 푸시 이후 하루 이상을 푸는 경우 실패합니다. – craigemery
다음과 같이''-d/-f3' 대신''$ {ref # refs/head /}'를 사용하여'refs/heads /'를 제거하는 것이 일반적으로''refs/heads/foo/bar'가 아니라'foo' 인 것처럼 foo/bar'를 사용합니다. 이 경우 문제는 아니지만이 경우에는'branch = master' 만 할 수 있습니다. :-) – torek
참. 나는 그에게 블록을 조건부로 만드는 방법을 보여주었습니다. 명백하지 않은 경우. 나는 당신이 나 자신을 지적한 표기법을 사용하는 것을 선호한다. 그러나 당신은 절대적으로 옳습니다.이 경우에는'branch = master'라고 말하기 위해 정리하거나 지사 명을 checkout 명령으로 끌어 놓을 수 있습니다. – jszakmeister