Jekyllを実行するたびに、宛先フォルダーの内容全体が破棄されます。これに伴う問題は、宛先ディレクトリが小さなgitリポジトリであり、そこから実際のサーバーにプッシュするために使用することです。JekyllがGitファイルを削除するのを止めて、コンテンツを生成してからコピーする必要がないようにする方法はありますか?
5 に答える
あなたが持つことができます:
- 他の場所(つまり、Jekyllデプロイメントの影響を受けるディレクトリ内ではない)のgitリポジトリ
- そのgitリポジトリをサーバーにプッシュするスクリプト
GIT_WORK_TREE
で、宛先フォルダーを値として変数を指定します
つまり、.git
作業ツリーディレクトリ自体に必要はありません。それは他の場所にある可能性があり、スクリプトはオプションを介して、またはオプションを
介して実際の作業ツリーを参照でき ます。GIT_WORK_TREE
--work-tree=<path>
スクリプトがJenkyllがファイルをコピー/消去する宛先ディレクトリの一部である場合は、逆の操作を実行して、.git
実際にGIT_DIR
変数または--git-dir=<path>
オプションを使用してどこにあるかを指定できます。
リポジトリのデフォルトオプションとしてnewを使用するには、--work-dir
を使用できますgit-config --add core.worktree ../PATH/
。ここで、PATH
-は、に相対的な実際の作業ディレクトリへのパス.git
です。
Jekyll wikiのDeploymentセクションを見たことがありますか?-https ://github.com/mojombo/jekyll/wiki/Deployment。Jekyllのデプロイ手順を明確に説明しています。
そして、なぜあなたは目的地からプッシュしているのですか?それは悪いです!他のクローンからプッシュします。
この設定も必要です。Jekyllを修正するためのこのプルリクエストを見つけ、.gitディレクトリを削除しないようにします: https ://github.com/mojombo/jekyll/pull/337
そこで私のコメントを読んでください:
- 修正は実際にはわずかに壊れています(.git $ではなく.gitにします)
- より良い解決策は、これを構成変数として使用し、.svnなどの他のファイルを処理することだと思います。
とにかく、私のJekyll行は次のようになります。dest_files << file unless file =~ /\/\.{1,2}$/ || file =~/\/\.git/
よく働く!私はoctopressを使用していて(deploy_dirをpublicに変更するだけです)、Rakefileの次の行をコメントアウトしています。
# (Dir["#{deploy_dir}/*"]).each { |f| rm_rf(f) }
# Rake::Task[:copydot].invoke(public_dir, deploy_dir)
# puts "\n## copying #{public_dir} to #{deploy_dir}"
# cp_r "#{public_dir}/.", deploy_dir
これで、(_ deploy dirの代わりに)パブリックディレクトリをgithubリポジトリにして、サイトを公開できます(ブランチのサブモジュールまたは私の場合は親リポジトリ)
publicと_deployをoctopressで使用するのは無意味に思えますが、Jekyllが.git dirを削除する以外に、publicと_deploydirsを分割する他の理由を聞いてうれしいです。(私はoctopressの完全なコミット履歴を読みましたが、なぜそれがこのように行われたのかについての説明を見つけることができませんでした)
私は実際に使用しました
git clone --separate-git-dir repo git@github....
そしてこの問題を解決しました。
@manojlds、わかりません。TPWのデフォルトの_config.yml(私がカスタマイズしたもの)は、Gitリポジトリも含むブログディレクトリ内の_siteディレクトリの場所を「。」と表示します。このディレクトリを移動して、ファイルをあちこちに吐き出さないようにする方法はありますか?Jekyllが何かを生成することを拒否するか、上記のシナリオが発生し、残された混乱をクリーンアップする必要があるため、ここで何かが欠けていると思います。
_siteを配置できる(または配置する必要がある)場所のベストプラクティスはありますか?
編集:それを見て、私は実際に次のことを確認します:
ソース: 。宛先:./_ site
ターミナルが(RVMを介してインストールされた)jekyll gemを見つけられないという事実は、おそらく_siteの場所ではなく、私の問題の原因です。