2014-02-07 23 views
0

我是新來貢獻一個開源項目,我已經遞交了一個補丁以繼續工作。我已經將本地工作副本更新爲最新的主幹,當我應用此補丁時,幾乎所有的副本都被拒絕。修補程序不適用(一切都被拒絕)。我該怎麼辦?

我在猜測這個補丁是由一個稍微早一點的中繼版本製作的,這也就是爲什麼這些行號不匹配的原因。我想我總是可以通過代碼手動複製和粘貼每個塊,但是我將花費我所有的開發時間修補代碼而不是貢獻!

有沒有簡單的方法來解決這個問題?修補程序是否包含有關對其進行修改的任何信息?我是否應該嘗試恢復我的工作副本,直到找到該修補程序適用的修訂版本爲止?

或者我只是想念一些簡單的東西?幹線更新頻繁漂亮該死的 - 我無法想象每個人都在具有這些問題的項目...

+0

檢查並顯示'grep的+++ patchfile'和'grep的--- patchfile'提取 –

回答

0

如果補丁創建

  • 從SVN工作拷貝
  • 使用SVN命令svn diff,而不是操作系統-specific

你可以在補丁文件中看到有關補丁點的信息。

補丁爲svn diff兩者之間的修訂在倉庫

... 
--- trunk/G1.txt (revision 3) 
+++ trunk/G1.txt (revision 4) 
... 

補丁爲基礎版本的svn diff和修改工作副本

... 
--- G1.txt (revision 4) 
+++ G1.txt (working copy) 
... 

---串在這兩種情況下包含的修訂,到補丁有被應用)

對於這種簡單的情況,你有svn up來源修訂,svn patch補丁文件,以提交應用變化的新版本,你必須(與修改工作副本)svn up到HEAD版本,解決所有可能出現的衝突,只有解決所有衝突後提交與變更

另一個版本(以某種方式更可用的方式)可能是:從SOURCE修訂版創建分支,將補丁應用於此分支的WC,將分支(帶補丁)合併回主線。

,我會更喜歡seconf方式 - 少頭痛,機會少犯錯誤

+0

感謝這個詳細的解答。 2件事情:1.我相信這個補丁是用git創建的,而不是SVN,儘管它設計用於兩者; 2.我沒有關於回購的寫權限,所以我不認爲我可以分行。 –

+0

@TomAuger - 1. git-patch也必須可用,我現在只是沒有git來檢查git特定的附加格式。2.你可以'svnrdump'原始的repo,從dump創建本地repo,使用並在需要時將WC切換到上游 –

相關問題