GIT 아카이브 대 CP -R
-
22-08-2019 - |
문제
Capistrano/VLAD 스타일 배포를위한 원격 서버에서 캐시 된 사본으로 git 저장소의 복제본이있는 경우 A를 수행하는 것이 좋습니다)
git archive --format=tar origin/master | (cd #{destination} && tar xf -)
또는 b)
cp -R cached-copy #{destination} && rm -Rf #{destination}/.git
명확히하기 위해, 저장소는 이미 원격 서버에 있으며 배포하는 동안 동일한 서버의 릴리스 디렉토리에 특정 버전을 복사하려고합니다.
해결책
나는 실제로 말할 것이다
rsync -avP /local/repo/* server:/remote/repo
이것은 괜찮은만큼 작동합니다 모든 점 파일을 건너 뜁니다 저장소에서뿐만 아니라 .git
. 건너 뛰고 싶다면 뿐 .git
그러면 당신은 필요합니다 -f
옵션과 남자 페이지.
좋아요 rsync. 훌륭하게 작동하며 대부분 SCP를 사용하는 것처럼 사용할 수 있습니다!
다른 팁
ㅏ)
현재 헤드의 기록과 객체의 양에 따라 상당히 클 수있는 .git 디렉토리를 전송하는 네트워크 오버 헤드를 저장합니다.
원격 엔드에 실제 git 저장소를 원한다면 실제 저장소로 밀고 델타 만 변경 해야하는 것이 좋습니다.
어느 것도 아니다!
이 작업을 수행하는 더 좋은 방법은 다음과 같습니다.
git fetch
캐시- 캐시를 현재 DIR에 복제하십시오 (
--no-checkout
옵션 활성화) - 원하는 커밋을 확인하십시오.
로컬 클론을 할 때 git은 하드 링크를 사용합니다. 즉, 파일을 수정할 때까지 1,000 개의 배포를 가질 수 있고 필요한 공간 만 사용할 수 있습니다 (사실상). 이 방법은 또한 더 빠른 보관 또는 RSYNC입니다.
또한 누군가가 이미 귀하를 위해 귀하의 코드를 작성했을 수도 있습니다.
Vigetlab 's capistrano_rsync_with_remote_cache
나는 이것을 전복과 함께 사용하고 그것은 나에게 잘 작동합니다.
제휴하지 않습니다 StackOverflow