2011-07-29 13 views
2

SubversionでXCodeを使用していましたが、1つの開発者として使用していたときに問題は発生しませんでした。SubversionはXCode 4.0のマルチユーザ環境で

しかし、私はコードを他の開発者(一切のバージョンコントロールを使用したことがない)と共有しなければならず、コードを統合/マージするのは悪夢となっています。 .h/.mファイルを統合/マージするときに問題は発生しませんが、".nib""xcodeproj"、および".xcdatamodeld"ファイルになるとすぐに何をすべきか分かりません。

"xcodeproj"をマージしようとするたびに、プロジェクトが壊れていて、".xcdatamodeld"が合併できませんでした。

誰かがマルチユーザ環境でXCode 4.0でsubversion/git/mercurialを効果的に使用する方法についての経験を共有できるかどうか疑問に思っていましたか?またはリンクを共有することができます。これは、マルチユーザ環境でのSubversionの使用方法を効果的に説明します。

ありがとうございました。

答えて

0

私が知っているこれらの種類のファイルをマージするフェイルセーフの方法はありません。だから、 には、一度に一人だけがこれらのファイルを変更しようとする必要があります。これはいつもうまくいかないので、ファイル内で変更した内容をコミットメッセージでログに記録するだけです。その後、競合が発生した場合は、ファイルの多くを変更したバージョンを手作業で解決し、他の人が手動でやり直すことができます。

.xcodeprojectに新しいソースファイルを追加したり、.nib内の要素の配置を変更したりするのは大したことではありません。あなたのプロジェクトが巨大であるか、ペン先にインタフェース全体が含まれている場合、問題になります。それがうまくいくには(実際にはそうですが)、プロジェクトが大きくなりすぎると、プロジェクトをサブプロジェクトに分割する必要があります。

0

他の2人の開発者のXcode with gitと同じ問題がありました。残念なことに、XcodeプロジェクトファイルはXMLファイルであり、プロジェクトに含まれるファイルと設定を追跡します。私は確信していませんが、私は.nibファイルもXMLファイルだと思います。誰かがそれを修正することができます。

GitはXcodeプロジェクトファイルをマージするのに素晴らしい仕事をしてくれました。私たちの* .nibファイルにも問題はありませんでした。私たちが問題を抱えていたのは、同じ名前のファイルを追加/削除したり、たくさんのファイルを大量に削除したり追加したりしたときだけでした。

私たちがこれを解決する唯一の方法は、ファイルを追加/削除するとすぐにお互いにプルプルをプッシュすることでした。そのように、その人は最新のファイルを持っていて、それを自分のリポジトリに追加せずに、同じファイルを持っている最新のコミットを取り出します。または、削除または名前を変更したファイルに変更を加えることもできます。

これは、ファイルを追加または削除するとすぐに、私たちが見つけた最も良い解決策です。チーム内の他の人はすべて引き分けます。素晴らしい解決策ではありません。しかし、とにかく頻繁にコミットする必要があります。

4

Subversionを使用していますか?リポジトリ内のファイルの90%から99%は、チェックアウト、編集、コミットの標準的なSubversionワークフローがうまく機能します。ただし、JPEGSやGIFSなどのファイルの種類によっては、単純にうまくマージできません。この場合、以前のSCCSとRCSの時代と同じようにしなければなりません。ファイルを編集してコミットする前に、ファイルをロックする必要があります。

ファイルをロックすると、他のユーザーが同じファイルを編集したり、ファイルの作業中に変更をコミットしたりすることを防ぐことができます。それは原油ですが、それは機能します。Subversionでは、編集中のファイルはいつでもロックすることができますが、そのファイルのプロパティがsvn:needs-lockの場合は、読み取り専用としてチェックアウトされます。ファイルを書き込み可能にする前にロックする必要があり、ロックされていなければファイルをコミットすることはできません。

これらのファイルの場合は、svn:needs-lockプロパティを設定します。

Subversionクライアントの設定でauto-propertiesを設定すると、新しく追加されたすべてのファイル(接尾辞によって異なります)にこのプロパティを自動的に設定できます。

そして、あなたは本当に、本当にすべて.nibsとxcodeprojと、これらのタイプの他のハエのすべてが持っていることを確認するにはsvnを:それらに設定ニーズロックは、あなたが私の pre-commit hook防ぐことができますこれらのファイルを使用することができますこのプロパティが設定されていない場合はコミットされません。

+0

David W.事前コミットフックが有効になっていません。リンクを修正していただけますか? – Dejell

+0

@Odelya私は私の前コミットフックを[Github](https://github.com/qazwart/SVN-Precommit-Kitchen-Sink-Hook)に移動したので、より一般に公開されます。 –

+0

ありがとう - ouは、Subversionクライアントの設定で自動プロパティを設定することで、新しく追加されたすべてのファイル(接尾辞に応じて)にこのプロパティを自動的に設定できます - XCodeクライアントでもできますか? – Dejell

関連する問題