2012-12-11 51 views
0

我正在重構一個C++代碼樹,版本號爲SVN。當前的代碼有兩個類,分別爲ModelModel_ext(每個都有一個.hh文件和一個.cpp文件),它們不會相互派生。 Model不應該擴展,但它實現了一個特定的模型。SVN:移動文件,然後添加一箇舊名稱的文件

我想創建一個抽象基類,但這個邏輯名更合理,是Model。在當前Model中實施的模型特有的代碼應該移入一個名爲Model_A的類中。同樣,Model_ext應更名爲Model_B但這不是問題。

從一個版本控制點,我想轉移ModelModel_A有:

svn mv Model.cpp Model_A.cpp 

(以及類似的頭文件),以表明Model_A.cppModel.cpp新版本(和它會進行本地修改)。

當然,我也必須添加新的Model.cpp。是否可能或將會混淆SVN

我知道這是可以修改Model.cpp,加Model_A.cpp(不使用svn mv),並同時提交的文件,但是這將摧毀舊Model.cpp和新Model_A.cpp之間的所有鏈接。

+1

移動之後&添加新的'Model.cpp'之前提交併且沒問題。 – Wrikken

+0

當然,但是中間版本不會編譯(因爲基類不存在),我試圖避免這種情況。 –

+0

那麼,不要編譯它。持續集成有它的限制,並且trunk並不是玩的地方,發生在分支機構......但是,我爲你做了一個快速測試,svn v.1.6提交替換的文件就好了,但老版本可能在我的(可能有缺陷的)回憶中有問題。 – Wrikken

回答

0

剛纔試了下...

$ svn move file.txt new.file.txt 
A   new.file.txt 
D   file.txt 
$ vi file.txt 
$ svn add file.txt 
A   file.txt 
$ svn status 
R   file.txt 
A   new.file.txt 
$ svn commit -m"test" 
Replacing  file.txt 
Adding   new.file.txt 
Transmitting file data . 
Committed revision 5. 

似乎爲我工作。

+0

是的,我們發現了這一點(請參閱我的問題中的評論)。 –

+0

在Subversion中,新的'file.txt'是一個全新的文件,而不僅僅是舊的'file.txt的新版本。記下歷史,看看。我敢打賭,因爲這不會跟蹤重命名,所以會將這些噴射器從kdesvn客戶端混淆出來。 –

相關問題