2017-12-19 23 views
0

capistrano 3을 사용하여 랙 응용 프로그램을 배포하고 있습니다. 예상대로 지점을 배치 할 수 있습니다. 그러나 배포 후 모든 코드가있는 현재 폴더의 서버에 로그인하면 .git가 표시되지 않습니다. 내가 init을해도 다음에 배포 할 때 다시 잃어 버리게 될 것입니다. 어쨌든 .git을 유지하고 어떤 지점을 배포하는지 추적 할 수 있습니까? 감사합니다capistrano를 배포 한 후 현재 경로에 git repo가 ​​없습니다.

+0

[관련이있을 수 있음] (https://github.com/capistrano/capistrano/pull/757) 문제. – tadman

+0

배포 된 지점을 알기 위해'current' 디렉토리에서 git 명령을 실행하려고합니까? – hallucinations

+0

예, git repo가 ​​아닙니다. 때로는 서버에서 직접 변경하는 경우가 있습니다. 변경된 사항을 확인하는 것이 좋습니다. – diwu86

답변

0

current 디렉토리는 자식 작업 복사본이 아닙니다. Capistrano는 의도적으로 .git 디렉토리를 포함하지 않습니다.

실제 자식 저장소는 current 디렉토리와 함께 repo 디렉토리에 있지만 실제로는 그렇지 않습니다. current의 내용을 배포하는 데 사용 된 지점 또는 SHA를 파악할 수 있기를 원하는 것 같습니다.

또한 current과 함께 revisions.log이라는 파일이어야합니다. 당신이 그것을 tail 경우에 당신은 석방을 수행 분기, SHA 및 사용자를 포함하여, 가장 최근의 자료를 볼 수 있습니다

$ tail -n 3 revisions.log 
Branch master (at 609bf349776b24f85f85b1950b92314b2d8f3bdc) deployed as release 20170927161115 by mbrictson 
Branch master (at 6a77bde58a2de42428b44da669c8f01475d6cd46) deployed as release 20171107004019 by mbrictson 
Branch master (at 6d0395ca4067180e0d76735c36b6852691b360ea) deployed as release 20171107011743 by mbrictson 

다른 방법으로, 특수 파일에 지점을 작성하는 사용자 지정 카피 스트라 노 작업을 작성할 수 있습니다. 예 :

desc "Write the branch to a .branch file in the release that was deployed" 
task :write_branch do 
    on release_roles(:all) do 
    within release_path do 
     execute :echo, "#{fetch(:branch)} > .branch" 
    end 
    end 
end 

after "deploy:updating", "write_branch" 
+0

설명해 주셔서 감사합니다. 우리는 실제로 현재 디렉토리를'.git' 디렉토리로 만들고 싶습니다. 가능하지 않은 것 같습니다. – diwu86

+0

@ diwu86 코드 작성을 원한다면 가능합니다. 'git : create_release' 작업을 재정의하면'git archive' 대신'cp -r'을 실행할 수 있습니다. 그것이 당신이 찾고있는 것이라면 그 라인을 따라 답을 줄 수 있습니다. –