문제

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

나는 이것을 전복과 함께 사용하고 그것은 나에게 잘 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top