web-dev-qa-db-ja.com

GitHubwikiをメインプロジェクトに統合する方法

すべてのソースコードとドキュメントを1つのgitリポジトリに保存したいと思います。私はすでにgithubページをメインプロジェクトに統合していますが、今度はgithubwikiで同じことをしたいと思います。

Githubwikiがプレーンなgitリポジトリであることを私は知っています。私の計画は、ウィキをリモートとしてメインリポジトリに追加し、すべてを1か所に保管することです。ただし、wikiリポジトリでは、すべてがルートディレクトリにあるため、メインプロジェクトが煩雑になります。

誰かがこれを以前に試したことがありますか?これを処理するための最良の方法は何ですか?

42
Fabian Jakobs

ウィキを サブモジュール として追加します。同じWikigitリポジトリがリモートとして接続されていますが、独自の.gitディレクトリを持つサブディレクトリ内にあります。

git submodule add git://github.com/you/proj.wiki

メインリポジトリのルートで、wikiリポジトリをサブモジュールとしてwiki/dirに追加します。

36
shelhamer

私はこれがすべてかなり退屈だと思います-私の意見では、github wikiはメインリポジトリのブランチである必要があります、または少なくともそれをオプションにすることが可能であるはずです。

それでも、最善の解決策は、ウィキをメインリポジトリに単純に移動することだと思います。たとえば、docs/またはwikiサブツリーマージ を使用します。たとえば、リポジトリがyou/projであるとすると、Wikiはgit://github.com/you/proj.wikiになります。次に、それをメインリポジトリにマージするには、次のようにします。

git clone git://github.com/you/proj
cd proj
git remote add -f wiki git://github.com/you/proj.wiki
git merge -s ours --no-commit --allow-unrelated wiki/master
git read-tree --prefix=wiki/ -u wiki/master
git commit -m "Github wiki subtree merged in wiki/"

ウィキを機能させて、そこでの一般の貢献を歓迎することもできますが、適切と思われる場合は、メインのドキュメントでそれらを精査します。レビュー後に新しい変更をマージするには、次のようにします。

git pull -s subtree wiki master

残念ながら、他の方法で変更をマージするのはやや注意が必要です。とにかく、これを1回限りで実行してから、Wikiを閉じるか、リポジトリソースにリダイレクトする必要があります...

さらに、このアプローチの主な注意点は、(たとえば)git log wiki/Home.mdが実際にはwikiページの履歴を表示しないことです。履歴はそこにありますが、どういうわけかgit-logはそれを追跡できません。これは 既知の制限 gitサブツリーに関連しています。これを修正する別の解決策は、履歴を保持するために、filter-branchと定期的なマージを1回実行することです。

私にとって、メインソースツリーの一部としてウィキを使用する主な利点は、プルリクエストと変更をコードとドキュメント間で調整できることです。また、人々がオンラインで読むだけだと想定するのではなく、コードとともにドキュメントを出荷するのも簡単になります...

6
anarcat

Wikiリポジトリを含む submodule を作成するか、通常のフェッチを実行してブランチを前後に切り替えることができます。

3