23

コマンドライン経由で、私は通常これを行います:

cp -rRp /path/to/a\_folder/. /path/to/another\_folder

これにより、a_folderの下のコンテンツだけがanother_folderにコピーされます。SVNでも同じことをする必要がありますが、わかりません。私はいつもこれで終わります:

/path/to/another\_folder/a\_folder

これを試してもSVNがスローされます:

svn copy file:///path/to/a\_folder/* file:///path/to/another\_folder

存在しないとのことです。

編集:

これはおそらく役立つでしょう。私のプロジェクトのディレクトリ構造は次のようになります。

my_project
  /branches
  /tags
  /trunk
  /vendor
    /1.1

実際に 1.1 フォルダーをコピーせずに、ベンダーの下にある 1.1 の内容をトランクに入れる必要があります。

4

5 に答える 5

21

確かに発見したように、既に存在するターゲット ディレクトリへのコピーは機能しません。

svn cp svn://my_project/vendor/1.1 svn://my_project/trunk

トランクが既に存在するため、次のようになります。

svn://my_project/トランク/1.1

マージを使用すると、マージ トラッキングが導入された 1.5 より前の Subversion でベンダー 1.1 タグの履歴が保持されないという不幸な特性があります。あなたは気にしないかもしれません。この場合、マージが正しい解決策になります。

svn co svn://my_project/trunk トランク-wc
svn マージ svn://my_project/trunk svn://my_project/vendor/1.1 trunk-wc

このマージを読む最良の方法は次のとおりです。最初に とtrunk同一にするために必要な変更を決定しvendor/1.1、次にそれらの変更を指定された作業コピー (この場合はトランクも) に適用します。

このマージは、以前トランクにあったものを効果的に吹き飛ばすことを指摘しておく必要があります。したがって、トランクにすでにローカル (ベンダー以外) の変更がある場合は、1.1 と以前のベンダー ドロップの間の変更のみを適用する必要があります。

svn co svn://my_project/trunk トランク-wc
svn マージ svn://my_project/vendor/1.0 svn://my_prjoect/vendor/1.1 トランク-wc

トランクが存在するが空の場合は、2 つの選択肢があります。トランクを交換するか、小さなシェル ループを記述します。

トランクを交換すると、次のようになります。

svn rm svn://my_project/トランク
svn cp svn://my_project/vendor/1.1 svn://my_project/trunk

シェルの活用(bash):

svn co svn://my_project/trunk トランク
svn co svn://my_project/vendor/1.1 1.1
( CD 1.1
  x in * ; 行う
    svn cp $x ../トランク
  終わり
)
svn ci トランク
于 2008-11-04T06:17:20.633 に答える
9

svn mergeの使用を検討しましたか?

このようなレポを考えると:

trunk/a_folder/foo
trunk/a_folder/bar
trunk/new_folder/baz

次のコマンドを使用して、fooディレクトリとbarディレクトリをマージします。

cd trunk/new_folder
svn merge -r1:HEAD http://svn/repo/trunk/a_folder .
于 2008-11-04T02:58:30.317 に答える
6

このリンクは回避策を説明しています。

http://svn.haxx.se/users/archive-2004-12/1537.shtml

基本的には、宛先フォルダーがリポジトリーに存在しない場合は、宛先フォルダーにソースフォルダーのコンテンツが含まれるということです。

以下の例を参照してください。フォルダ07-03-2012はリポジトリに存在しません。以下のコマンドを実行すると、2012年7月3日のHEADフォルダの内容が取得されます。

svn cp <URL>/HEAD/ <URL>/branches/07-03-2012 -m "test"
于 2012-07-03T16:37:43.200 に答える
4

/tags/version-1.0/あなたが望むのは、余分なフォルダーがなくても、トランクの内容がフォルダーに収まることだと思い/trunkます。つまり、これは悪いです: /tags/version-1.0/trunk/stuff. これはいいですね: /tags/version-1.0/stuff.

これを取得するには、2 ステップのプロセスを実行します。

svn copy http://localhost/MyProject/trunk    http://localhost/MyProject/tags/

# now I have /MyProject/tags/trunk

svn rename http://localhost/MyProject/tags/trunk  http://localhost/MyProject/tags/version-1.0
于 2012-04-04T22:26:25.177 に答える
0

あなたは非常に近いです:

svn copy -m"Copy Directory" file:///path/to/a_folder file:///path/to/another_folder

/*最初の引数から をドロップするだけです。

于 2008-11-04T03:11:01.447 に答える