2015-10-16 111 views
0

我需要對Subversion中「可合併」的含義以及Subversion嘗試合併內容的方式作出澄清。Subversion:爲什麼以及如何自動化行合併?

this answer問題「的變化,是不是有衝突的例子」,我讀到:

「1號線」和「Line1changed」並不衝突和「可合併」。 另外「Line1Changed」可以代替「Line1」。

爲什麼?

在編程語言中,這是沒有意義的。 例如:
INT虛擬= intVar

INT虛擬= intVar_

不是可合併的...(在我看來),所以,請你解釋一下:

- 爲什麼這些行可合併?
- 爲什麼Subversion(我使用Tortoise SVN)嘗試自動合併這些行而不提示任何警告? (我應該知道)

謝謝!

回答

1

我不確定您是否仔細閱讀了答案。答案的意思是,如果只在合併的一側更改一行,那麼它可以自動合併;如果同一行由不止一個人改變,那麼你必須處理衝突(以幾種方式之一)。

所以,在你的榜樣,如果從

​​

開始和你的鄰居一行改成了

int dummy=intVar_B 

然後,因爲你並沒有改變這條線就會自動合併的變化;只有你的鄰居做到了。但是,如果你從

​​

啓動,您將其更改爲

int dummy=intVar_A 

而且你的鄰居將其改爲

int dummy=intVar_B 

那麼你就需要做的合併時間的選擇,選擇無論是他們的版本,還是你的版本,或者如果你願意的話,你都可以扔掉它們並組成一個新的版本,以某種方式混合它們,或者任何合適的東西。

+0

嗨丹,在這個例子中,它的目的是「安全」添加「東西」的一條線,但我的問題是:
爲什麼添加「東西」一行被認爲是「安全」,並自動製作而不讓用戶意識到這一點? 「鄰居」所做的更改可能會導致某些事情不可預測並失控。可以合併它的更改,但Subversion應該要求我確認。 我錯在哪裏? 在SVN中是否有任何選項來避免這些自動合併,並將它們作爲衝突由用戶進行管理? 謝謝大家對SVN新手的耐心等待:) –

+0

您將變更的安全性與軟件自動合併的能力相混淆。 Subversion會合並它,因爲它可以做到這一點,而不會產生衝突。知道代碼是否安全並不足夠聰明 - 假設問題通過人工評估,自動化測試或任何機制對您的情況/團隊最有意義來回答。 –

相關問題