0

でバージョン管理された C++ コード ツリーのリファクタリングに取り組んでいSVNます。現在のコードには、相互に派生していない2 つのクラス(それぞれにファイルとファイルがあるModel)があります。拡張されることは想定されていませんでしたが、特定のモデルを実装しています。Model_ext.hh.cppModel

抽象基本クラスを作成したかったのですが、より論理的な名前は ですModel。現在実装されているモデル固有のコードは、そこから派生したModelというクラスに移動する必要があります。Model_A同様に、Model_ext名前を変更する必要がありますModel_Bが、これは問題ではありません。

バージョン管理の観点から、次のように移行Modelしたいと考えていましModel_Aた。

svn mv Model.cpp Model_A.cpp

(ヘッダーファイルについても同様)Model_A.cppの新しいバージョンであることを示すためModel.cpp(およびローカルで変更されます)。

もちろん、新しい も追加する必要がありModel.cppます。それは可能ですか、それとも混乱しSVNますか?

Model.cpp両方のファイルを変更、追加Model_A.cpp(を使用せずにsvn mv) およびコミットできることはわかっていますが、これにより、古いModel.cppと新しい の間のすべてのリンクが破棄されますModel_A.cpp

4

1 に答える 1

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.

私にはうまくいくようです。

于 2012-12-12T00:09:36.643 に答える