2011-08-04 13 views
37

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

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

誰もこれを前に試しましたか?これを処理する最善の方法は何ですか?

+0

私はサブモジュールと一緒に行きました。答えをありがとう。 –

+1

wikiをサブモジュールとしてどのようにあなたのために行くのですか?私は似たようなことをしたいが、サブモジュールビジネスの周りに頭を包んでいない。これは分岐とマージにどのように対処しますか?私はwikiのために同じコードを "開発する"ブランチを持っていたいので、それを私のマスターブランチとマージすると、ライブウィキブランチ。 –

+0

しかし、それをサブモジュールとして持つのは何ですか?とにかくそれを変更したり使用したりすることはできません。あなたはgithubの外のどこでもそれを使用できますか?私はあなたがgithubリポジトリとは別のディレクトリにそれを持つことができ、単にメインリポジトリからそのディレクトリを削除することを意味します。 – jayarjo

答えて

32

wikiをsubmoduleとして追加します。同じWiki git repoはリモートとして接続されていますが、自身の.git dirを持つサブディレクトリ内にあります。

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

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

+7

今日は実際には 'git:// github.com/you/proj.wiki'です – cregox

+2

これは、あなたの変更をグラフタブに表示できるようにしますか? – devlord

3

wikiリポジトリを使用してsubmoduleを作成するか、定期的なフェッチを行い、前後に分岐を切り替えることができます。

5

私は、これはすべてのかなり退屈見つける - 私の意見では、githubのウィキがメインリポジトリの枝である必要があり、あるいは少なくともオプションであることにすることが可能でなければなりません。

それでも、私は最善の解決策は、メインリポジトリに単に移動ウィキにあると信じて、subtree mergeを使用して、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/" 

あなたも、そこに公共の貢献を歓迎する側での作業のwikiを保つことができますが、:その後、あなたのメインのレポでそれをマージするために、あなたが行うだろう。後のレビューに新しい変更をマージするには、あなたがどうなる:

git pull -s subtree wiki master 

残念ながら、マージは、他の方法がややトリッキーで変化し、そしてとにかく、あなたはおそらく1時間の事としてこれを行う必要があり、その後、ウィキを閉じて、レポソースにリダイレクトする...

さらに、このアプローチの主な注意点は、git log wiki/Home.md(たとえば)は実際にはwikiページの履歴を表示しないということです。履歴ですが、なんとかgit-logはそれを追跡できません。これはgitサブツリーに関連するknown limitationです。これを修正するもう1つの解決方法は、filter-branchを実行し、履歴を保存するための1回の通常のマージを行うことです。私にとって

、メインのソースツリーの一部としてウィキを持つことの主な利点は、プル要求および変更はコードとドキュメント間で協調することができるということです。また、人々は単にオンラインで読むことを前提とするのではなく、コードをドキュメントに添付するのが簡単です。

+0

私の場合、私のwikiフォルダを完全にメインプロジェクトリポジトリにコミットさせるために 'git push'が必要です。 – hyip

+0

理由はわかりませんが、 'git log wiki /'はこの手法を使ってwikiの履歴を表示しません。私は 'git log --all' *がこれらの変更を表示するので、理由を理解できません... – anarcat

関連する問題