2012-05-11 4 views
4

私はSaaSアプリケーションがユーザーに使っているリソースに何らかのGitアクセスを提供するという考えを持っています。これにより、ユーザは、GitインタフェースやアプリケーションのネイティブWebベースインタフェースを通じてコン​​テンツを編集したりプッシュしたりすることができます。私の主な関心事は、ユーザーがWebベースのインターフェースのコンテンツを編集しているときにマージの競合を調整する方法です(GitとGitクライアントがそれを処理する必要があるため、Gitインターフェイスとのマージの競合はあまり気にしません)。これは、GitHubがGitベースのアクセスとWebベースのアクセスの両方をWikiに許可する方法と非常によく似ていますが、WebベースとGitベースの両方のアクセスを提供する際に、コンテンツ。GitHubはリポジトリ経由でWebベースのWiki編集をどのようにマージするのですか?

ユーザーがWebインターフェイスからGitHubのWikiページを編集し、別のユーザーが変更を保存する前にWikiリポジトリブランチに変更をプッシュすると、変更が保存されるとどうなりますか? 「最後のものが勝つ」か、「新しいバージョンですべての変更をやり直してください」を使用していますか?

は、私は一般的に、問題を議論し related SO postを見つけましたが、私はそれがすでに焼かいくつかのマージ機能を持つGitリポジトリに裏打ちされていますので、GitHubには、具体的にそれをどのように処理するか非常に興味があります。

+0

サンプルギブスレポで自分自身で試してみるのが最善だと思います。 – CharlesB

+1

@CharlesB - 私はいくつかのシナリオを試しましたが、Webインターフェイスに何も表示されませんでした。私はそれが自動マージして(ほとんどの場合起こっているように見える)、あるいは他の方法を選択して解決すると仮定していますが、いくつかのテストがすべてをカバーしていない可能性があるため、可能な場合。私の推測では、最初にマージを試みてから、最新のものをコンフリクトで使用していますが、私は肯定的ではありません。 – daveaglick

答えて

4

のGitHubに行われたすべての変更をwikiは、Webインターフェイスで行っても、gitで行っても、リポジトリ内での独自のコミットです。

Webインターフェイスからwikiページを追加、編集、または削除した後、git pull wikiリポジトリを編集すると、git historyの編集が表示されます。もしあなたがウィキが所有するプロジェクトのオーナーまたは協力者であれば、そのコミットを元に戻してgitを使って変更をGitHubにプッシュすることもできます(私は個人的にこれをやって、誤って削除されたページを回復しなければなりませんでした)。

あなたが記述した状況では、最後の編集が勝ち、最初の編集の内容が失われて表示されます(this issueによる)。

もっと具体的な答えは、Gollumプロジェクトを参照してください。このプロジェクトは、git-backed wikiを管理するためにGitHubが使用するプロジェクトです。

2

私はWalikiというGollumに似た、gitに裏打ちされたwikiエンジンを開発しています。

特に、よりスマートな変更をマージしています。新しい「勝利」アプローチの代わりに、Walikiはすべてのエディションを分離支店で処理し、に保存します。

編集中にページに外部的な変更があり、gitが自動的にマージできる場合、ユーザーに通知されます。マージに失敗した場合でも、ページは保存されますが、コンフリクトを修正するようにエディタが再ロードされます。

フィードバックを受け取ってうれしく思います。

関連する問題