7

免責事項:私はSVNに比較的慣れていません。私の経験のほとんどは GIT に関するものです。

SVN トランクにすべてのコードを含む運用サイトがあります。いくつかの変更を加えたチェックアウト済みのコピーがあります。私が構築している機能のブランチを作成することにしました。先に進んで、ブランチもチェックアウトしました。これで、ブランチのローカル コピーにマージする必要がある変更を含むトランクのローカル コピーができました。これを行ったら、ローカル トランク コピーを破棄します。変更を実稼働トランクにプッシュしたくないからです。

ローカル SVN フォルダのコードを別のローカル SVN フォルダにマージするにはどうすればよいですか?

PS私はUbuntu 12.04で開発しています。私は SVN Workbench をインストールしており (実際には使用していません)、ほとんどの svn 作業をコマンド ライン経由で行っています。これに役立つ Linux GUI があれば、それも問題ありません。

4

4 に答える 4

2
  1. ブランチに変更を加えて作業コピーを切り替えます
  2. 専念
于 2012-07-27T14:12:18.233 に答える
1

トランクでの変更の差分を作成し、それをブランチに適用します。

cd trunk
svn diff > ../the-branch/yourchanges.diff
svn revert -R .
cd ../the-branch
svn patch yourchanges.diff

別のブランチにいることが patch で気に入らない場合は、unix patch コマンドを使用できます。

patch -p0 < yourchanges.diff

それはほとんどそこに行きますが、ファイルを削除せず(ファイルを切り捨てます)、svn プロパティの変更を保持しません。

于 2012-07-27T14:09:20.853 に答える
1

Git の経験は SVN の経験よりも大きく、DVCS スタイルで考えているので、 SmartGitを SVN クライアントとして使用することもできます。これは git-svn のように機能しますが、完全なブランチとチェリー ピッキング マージ、無視、EOL 処理プロパティ、外部オブジェクト、およびタグを正直に変換します (git-svn はそうではありません)。

于 2012-07-27T14:03:37.597 に答える
0

まあ、SVN は DCVS ではないので、次のことなしにはそれを行うことはできません: - 履歴を失う、 - または中央リポジトリにコミットする。

中央リポジトリとのマージを実行する方法を知っていると思います。

履歴を失っても構わない場合は、ローカル svn リポジトリを作成し、そこにローカル バージョンのトランクをインポートする必要があります。このリポジトリをチェックアウトし、ローカル ブランチ ファイルをそこにコピーします。マージを実行し、結果をリモート リポジトリに再コミットします。

ただし、日常のワークフローでローカル ステージング エリアが必要な場合は、Git または Mercurial に切り替えることができます。

さよなら。

于 2012-07-27T13:31:08.173 に答える