0

このくだらないレガシーソフトウェアで何が起こっているのか完全には理解できません。svn copy svn://trunk svn://branch/nameいくつかのディレクトリでまだファイルが見つからないことを試みました。トランクディレクトリにいることを試みましたsvn merge -rxxx:yyy svn://branch/nameが、リビジョンが変更されました。トランクにまだ存在するブランチにファイルは追加されませんでした。

どうしたの??git-way でマージする方法は? あるディレクトリから別のディレクトリにファイルを複製するだけで、それだけです..svn merge何か違うことを意味しますか??

質問はsvnで同じことをする方法ですか???:

$ git checkout master
$ git merge hotfix

ここにトランク/ブランチリポジトリをネストしたことの1つの大きなマイナス..多分これはすべての写真を台無しにしますか?

4

2 に答える 2

1

SVN は git の方法ではマージしません。svn の方法でマージします。これの一部は、git が同様の問題を解決するために成長したためですが、非常に異なる環境でした。部分的には、Subversion は「複数の先祖」の概念をサポートしていないため、すべての Subversion 操作は git rebase のように機能します。

特別な作業を行わない限り、SVN マージは、完全に押しつぶされた git マージのように機能します。git の主張は、マージ中に変更セットを公開する方がよいということです。

マージのような git を自分で簡単に実行できるようにするために、以前に (bash で) ツールを作成して、個々の変更セットを保持する Subversion でのマージを支援しました。これは後期アルファ品質のコードですが、いくつかの組織で役に立ちました: https://github.com/dmsasser/svntools . このツールは Linux と cygwin で動作します。

このツールを実行すると、結果は「git rebase」と同等になります。

于 2013-02-20T20:32:23.550 に答える
1
$ svn merge ^/branch/name

または -r を使用しますが、作業コピーに入れます。svn:// から svn:// に直接マージすることはできないと思います。マージ後、コミットするだけ

merge: Merge changes into a working copy.
usage: 1. merge SOURCE[@REV] [TARGET_WCPATH]
(the 'sync' merge)
2. merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [TARGET_WCPATH]
(the 'cherry-pick' merge)
3. merge --reintegrate SOURCE[@REV] [TARGET_WCPATH]
(the 'reintegrate' merge)
4. merge SOURCE1[@N] SOURCE2[@M] [TARGET_WCPATH]
(the '2-URL' merge)

すべてのオプションには TARGET_WCPATH が必要です

于 2013-02-20T16:29:48.867 に答える