2011-07-29 46 views
2

我一直在使用XCode與顛覆一段時間,沒有問題是當我作爲一個單一的開發人員使用(我只使用2個命令,提交和添加)時造成的。使用XCode 4.0在多用戶環境中顛覆

但現在我必須與另一位開發人員(誰從未使用過任何類型的版本控制)共享代碼,並且集成/合併代碼已成爲一場噩夢。當我們在集成/合併.h/.m文件時沒有問題,但一旦涉及到".nib","xcodeproj"".xcdatamodeld"文件,我們真的不知道該怎麼做。

每當我們嘗試合併"xcodeproj",項目變得腐敗並且合併".xcdatamodeld"對我們來說是不可能的。

所以我想知道如果有人可以分享他/她的經驗,如何有效地在多用戶環境中使用XCode 4.0的Subversion/git/mercurial?或共享一個鏈接,這可以解釋如何在多用戶環境中有效地使用Subversion。

謝謝。

回答

0

沒有安全的方式來合併我知道的這些類型的文件。因此,您將不得不 嘗試確保一次只有一個人正在更改這些文件。這不會總是有效,所以只需使用提交消息記錄文件中更改的內容即可。然後,如果發生衝突,您可以手動解決問題,方法是更改​​更多文件的版本並手動重做其他人的操作。

這通常不是什麼大問題,比如向.xcodeproject添加新的源文件,或者改變.nib中元素的對齊方式。如果您的項目非常龐大或者您的筆尖包含整個界面,則會成爲問題。爲了使其運行良好(實際上它的確如此),如果項目變得太大,則需要將項目分解爲子項目。

0

我與2個其他開發人員使用git的Xcode有同樣的問題。不幸的是,Xcode項目文件是一個XML文件,跟蹤項目中包含的文件以及設置。我不確定,但我認爲.nib文件也是XML文件。有人可以糾正我。

Git在合併Xcode項目文件方面做得很好,並且從未真正對我們的* .nib文件有任何問題。我們唯一遇到問題的時候是我們添加/刪除了具有相同名稱的文件,或者有人做了很多繁重的刪除和添加大量文件。

我們解決這個問題的唯一方法是在添加/刪除文件後立即讓對方推送。這樣,這個人擁有最新的文件,並沒有將它們添加到他們自己的存儲庫中,然後將最新的提交中包含相同的文件。或者他們將修改添加到已刪除或重命名的文件。

這是我們發現的最佳解決方案,只要我們添加或刪除了一個文件,讓團​​隊中的其他人都能夠拉動。不是一個偉大的解決方案btw。不過,你應該經常反擊。

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

大衛W.你的pre-commit鉤子未啓用。你能修理鏈接嗎? – Dejell

+0

@Odelya我搬到我的預提交鉤子[Github上(https://github.com/qazwart/SVN-Precommit-Kitchen-Sink-Hook),因此它會更公開。 –

+0

謝謝 - 我可以用了XCode客戶做到這一點 - 關於OU可以自動對所有新添加的文件,通過在你的Subversion客戶端配置設置自動屬性中設置該屬性(取決於後綴)? – Dejell