문제

내 마스터 브랜치 레이아웃은 다음과 같습니다.

/ <-최상위

/ client <-데스크톱 클라이언트 소스 파일

/ server <-Rails 앱

내가하고 싶은 것은 내 deploy.rb에서 / server 디렉토리를 풀다운하는 것입니다.하지만 그렇게 할 방법을 찾을 수없는 것 같습니다./ client 디렉토리는 방대하므로 / server를 /에 복사하는 후크를 설정하는 것은 잘 작동하지 않으며 Rails 앱만 풀다운하면됩니다.

도움이 되었습니까?

해결책

더러운 포크 작업은 없지만 더 더러운 것!

내 config / deploy.rb에서 : 라코 디스

그런 다음이 새로운 전략을 Capfile에 추가했습니다. 라코 디스

다른 팁

Capistrano 3.0의 경우 다음을 사용합니다.

Capfile : 라코 디스

그리고 내 deploy.rb : 라코 디스

모든 중요한 코드는 release를 사용하여 저장소의 하위 디렉토리 만 보관 한 다음 git archive 인수를 사용하여 적절한 수준에서 보관 파일을 추출하는 --strip 전략에 있습니다.

업데이트

Capistrano 3.3.3부터 이제 tar 구성 변수를 사용할 수 있으므로이 답변이 더 이상 사용되지 않습니다.예 : 라코 디스

http://capistranorb.com/documentation/getting-started/configuration 참조.

또한 Capistrano를 사용하여 전체 저장소를 복제하고 사용하지 않는 파일과 폴더를 삭제 한 다음 원하는 폴더를 계층 구조 위로 이동합니다.

deploy.rb 라코 디스

프로젝트가 너무 커지지 않는 한 이것은 우리에게 꽤 효과적이지만 가능하다면 각 구성 요소에 대한 자체 저장소를 만들고 git 하위 모듈과 함께 그룹화하십시오.

두 개의 git 저장소 (클라이언트 및 서버)를 갖고이를 "수퍼 프로젝트"(앱)에 추가 할 수 있습니다.이 "수퍼 프로젝트"에서 두 개의 저장소를 하위 모듈로 추가 할 수 있습니다 (이 자습서 ).

다른 가능한 해결책 (좀 더 더러운)은 클라이언트와 서버에 대해 별도의 분기를 갖는 것입니다. 그런 다음 '서버'분기에서 가져올 수 있습니다.

해결책이 있습니다.crdlo의 capistrano 용 패치 capistrano 소스 .기존 capistrano gem을 제거하고 패치를 적용하고 setup.rb를 설치 한 다음 그의 매우 간단한 구성 라인 인 set :project, "mysubdirectory"를 사용하여 하위 디렉토리를 설정할 수 있습니다.

유일한 문제는 github가 적어도 그가 작성했을 때 "아카이브 명령을 지원"하지 않는다는 것입니다.나는 svn을 통해 내 개인 git repo를 사용하고 있으며 잘 작동하지만 github로 시도하지 않았지만 충분한 사람들이 해당 기능을 추가한다고 불평한다면 상상합니다.

또한 capistrano 작성자가이 기능을 cap 관련 버그 .

@Thomas Fankhauser 답변에 기반한 Capistrano 3의 경우 : 라코 디스

안타깝게도 git은이를 수행 할 방법을 제공하지 않습니다.대신 'git 방식'은 클라이언트와 서버라는 두 개의 저장소를 갖고 필요한 저장소를 복제하는 것입니다.

이전 답변 및 github에서 찾은 기타 정보를 기반으로 Capistrano 3.x에서 작동하는 스니핑을 만들었습니다. 라코 디스

Github 에서 Gist로도 사용할 수 있습니다.

codebasehq.com에서도 작동하지 않는 것 같습니다. 그래서 저는 혼란을 정리하는 카피 스트라 노 작업을 만들었습니다. :-) 아마 카피 스트라 노 작업을 재정 의하여이 작업을 수행하는 덜 괴팍한 방법이있을 수 있습니다 ...

이 작업은 몇 시간 동안 작동했습니다. 라코 디스

디렉토리에 대한 변수를 선언 할 수 있습니다 (여기서는 rails_app).

얼마나 강력한 지 살펴 보겠습니다."before"를 사용하는 것은 매우 약합니다.

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