は、私は、次の使用:私のCapfile
で
:
# Define a new SCM strategy, so we can deploy only a subdirectory of our repo.
module RemoteCacheWithProjectRootStrategy
def test
test! " [ -f #{repo_path}/HEAD ] "
end
def check
test! :git, :'ls-remote', repo_url
end
def clone
git :clone, '--mirror', repo_url, repo_path
end
def update
git :remote, :update
end
def release
git :archive, fetch(:branch), fetch(:project_root), '| tar -x -C', release_path, "--strip=#{fetch(:project_root).count('/')+1}"
end
end
そして、私のdeploy.rb
中を:
# Set up a strategy to deploy only a project directory (not the whole repo)
set :git_strategy, RemoteCacheWithProjectRootStrategy
set :project_root, 'relative/path/from/your/repo'
すべての重要なコードは、戦略release
方法でありますgit archive
を使用してリポジトリのサブディレクトリのみをアーカイブし、次に--strip
a適切なレベルでアーカイブを解凍するには、tar
に送信してください。カピストラーノ3.3.3のよう
UPDATE
、あなたは今、この答えは時代遅れになり:repo_tree
設定変数を、使用することができます。例:
set :repo_url, 'https://example.com/your_repo.git'
set :repo_tree, 'relative/path/from/your/repo' # relative path to project root in repo
http://capistranorb.com/documentation/getting-started/configurationを参照してください。
ああ、私はあなたにcoooldビールのパイントを送ることができたらいいなあ。ありがとうございました!! – Nazar
パーフェクト。ちょうど私が必要なもの。ありがとう! – Matt
NB。誰かが読んでいる、これはあなたがすでに:remote_cacheをあなたの:deploy_viaメカニズム(サーバ側のSCMアクセスに依存している)で使用している場合に動作します。 – jrg