2010-10-27 46 views
0

我最近在分支包含一些功能的源代碼。我想將它們合併到主幹源。是否有可能合併主幹和分支而無需使用Tortoise SVN拉動源代碼?

1)我不能在本地拉來源。因爲,我必須在不同地點合併近30個來源。
2)我無法刪除幹線源位置,並使用Copy To選項移動分支源。

所以,我只想通過單獨提供源和目標位置來合併源,而無需在本地拉源。或者有沒有自動化的方法可用?

我看到很多與此相關的帖子。沒有一個地址,我正在尋找的上下文。

回答

2

我不認爲這是可能的,但這是一件好事。你真的想要一個盲目的,自動合併所有這些來源(完成提交)?在本地副本中合併的要點是,您可以完整地檢查一切,並解決您在多個分支中的相同位置發生更改時可能會遇到的所有衝突......

+0

我希望它更像是一個絕對的替代品。但是,如果我刪除舊的來源並使用「複製到」選項。然後,我將失去舊的修訂細節。我想要追溯修訂版本的舊版本的修訂細節。我不熟悉svn。或者是否可以保留舊的修訂細節並刪除舊的來源並移動新的來源? – 2010-10-27 09:05:22

+1

+1謝謝。我最終刪除合併。 :) – 2010-10-27 09:29:23

+0

嘿,不知道我有多少幫助,但我很高興你在最後的隊友,戴夫排序。 – Dave 2010-10-27 09:53:58

2

正如this烏龜SVN文章

... merging always takes place within a working copy. 

你可能會爲了使用svn merge --accept theirs-full URL1 URL2 WCPATH解決與從給定的URL的版本所有衝突。

svn delete刪除的資源將仍然是歷史的一部分。

+0

+1感謝您的意見。 – 2010-10-27 09:30:12

1

不,你問的是不可能的。合併發生在您的工作副本中。有幾個原因爲什麼這是保持這種方式的好主意:

  • 衝突可能出現並且必須處理。
  • 用戶通常在提交新代碼之前進行構建和測試,並且在合併後也應該這樣做。
  • 如果合併失敗或者你做了一些愚蠢的事情,那麼在你實際提交之前你沒有搞砸任何東西。

如果您必須合併30個以上的源代碼,您最好的選擇是使用命令行客戶端自動化事物。這是我會怎麼做(在bash,你必須要翻譯成.bat或任何你認爲合適):

REPOS= \ 
    http://... \ 
    http://... 

for f in REPO; do 
    svn co REPO/target  
    svn merge REPO/source target 
    svn commit -m "Merged target into source" target 
    rm -r target 
done 

提示:

  • 使用svn help <command>怎麼看以調用svn命令中的每一個。
  • 首先使用svn merge --dry-run而不使用svn commit以確保您可以在沒有任何衝突的情況下執行合併(除非先解決衝突,否則svn commit將會失敗)。
+1

+1謝謝你。 - 幹奔跑是很酷的事情。你搖滾:) – 2010-10-27 10:02:02

相關問題