문제

나는 최근에 몇 개의 플러그인을 하위 모듈로 바꾸고 저장소를 "git 클론"할 때 하위 모듈 디렉토리가 비어 있음을 깨달았습니다. 이는 공동 개발자가 하위 모듈을 초기화하고 업데이트하는 데 적합합니다.

그러나 Capistrano와 함께 배포 할 때 하위 모듈 코드는 분명히 배포되지 않아 문제가 발생합니다. 릴리스 브랜치로 들어가서 시작하여 모듈을 업데이트 할 수는 있지만 이는 이상적인 솔루션이 아닙니다.

누구든지 이것을 처리하는 방법에 대한 제안이 있습니까? Capistrano 작업만큼 간단합니까?

나는 사물의 생산 측면에서 약간의 멍청이입니다.

고맙습니다!

도움이 되었습니까?

해결책

에 따르면 이 최근 스레드, Capistrano는 하위 모듈을 시작하고 업데이트 할 수 있어야합니다.

set :git_enable_submodules,1

config/deploy.rb에서는 충분해야합니다. .gitmodules 출품작은 최신 상태입니다.
너는 필요할지도 모른다 Capistrano 패치에 (lib/capistano/recipes/deploy/scm/git.rb) 하위 모듈이 포함되도록합니다.

    def checkout(revision, destination)
      git      = command

      branch   = head

      fail "No branch specified, use for example 'set :branch, \"origin/master\"' in your deploy.rb" unless branch

      if depth = configuration[:git_shallow_clone]
        execute  = "#{git} clone --depth #{depth} #{configuration[:repository]} #{destination} && " 
      else
        execute  = "#{git} clone #{configuration[:repository]} #{destination} && " 
      end

      execute += "cd #{destination} && #{git} checkout -b deploy #{branch}" 

      if submodules = configuration[:git_enable_submodules]
        execute += " && git-submodule init &&" 
        execute += "git-submodule update" 
      end

      execute
    end

당신이 가지고 있다면 중첩 된 서브 모듈, 당신은 필요합니다 :

gem sources -a http://gems.github.com
$ sudo gem install morhekil-capistrano-deepmodules

배포 구성에서만 필요합니다.

'capistrano/deepmodules'필요

보석은 모든 나머지를 자동으로 처리합니다.
삭제할 수 있습니다 :git_enable_submodules 구성에서 보석은주의를 기울이지 않습니다. 필요한 경우 이미 하위 모듈을 활성화하고 싶다고 말하고 있습니다.

그리고 지금은 보석에 의해 원격 캐시 전략 만 지원됩니다. 그것은 당신이 당신에게 추가해야한다는 것을 의미합니다 config 다음 줄 :

set :deploy_via, :remote_cache

원격 캐시를 가능하게하고 실제로는 어쨌든하고 싶은 일입니다. 서브 모듈이 많은 대형 코드베이스를 배포하는 것은 서버 측 캐시가없는 경우 실제로는 어려운 경험입니다.

다른 팁

set :git_enable_submodules, 1 이 옵션 없이는 작동하지 않았습니다.

set :deploy_via, :remote_cache`

이것은 어디서나 문서화되지 않은 것처럼 보이고 알아내는 데 시간이 걸렸습니다. 어쨌든 하위 모듈이 없어도 그 옵션을 갖는 것이 일반적입니다.

와 함께 이 커밋, Capistrano는 GIT 서브 모듈과 - -재수 옵션 구운 옵션을 모두 지원합니다. deploy.rb 파일:

set :git_enable_submodules, true

그리고 당신이 사용하는 경우 재귀 git 서브 모듈, 이것도 추가하십시오 :

set :git_submodules_recursive, true

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