svn: cara membuat cabang dari revisi trunk tertentu

116

Tindakan berikut hanya akan membuat cabang dari revisi kepala bagasi. Bagaimana cara membuat cabang dari revisi tertentu? Terima kasih.

$ svn copy http://svn.example.com/repos/calc/trunk \
       http://svn.example.com/repos/calc/branches/my-calc-branch \
  -m "Creating a private branch of /calc/trunk."
pierrotlefou.dll
sumber
2
Hanya untuk dicatat bahwa dua garis miring terbalik () ada untuk mengabaikan karakter baris baru ... dan itu bukan bagian dari perintah svn
Harry Lime

Jawaban:

163

Lihat perintah bantuan:

svn help copy

  -r [--revision] arg      : ARG (some commands also take ARG1:ARG2 range)
                             A revision argument can be one of:
                                NUMBER       revision number
                                '{' DATE '}' revision at start of the date
                                'HEAD'       latest in repository
                                'BASE'       base rev of item's working copy
                                'COMMITTED'  last commit at or before BASE
                                'PREV'       revision just before COMMITTED

Untuk benar-benar menentukan ini di baris perintah menggunakan contoh Anda:

svn copy -r123 http://svn.example.com/repos/calc/trunk \
    http://svn.example.com/repos/calc/branches/my-calc-branch

Di mana 123nomor revisi di bagasi yang ingin Anda salin. Seperti yang telah dicatat orang lain, Anda juga dapat menggunakan sintaks @. Saya lebih suka pemisahan yang lebih jelas dari # revisi dari URL, secara pribadi.

Seperti disebutkan dalam bantuan, Anda juga dapat mengganti revisi # dengan kata-kata tertentu:

svn copy -rPREV http://svn.example.com/repos/calc/trunk \
    http://svn.example.com/repos/calc/branches/my-calc-branch

Akan menyalin "revisi sebelum COMMITTED".

typeoneerror
sumber
Juga, dalam contoh di atas, jika revisi 123tidak terjadi di bawahnya trunk, maka copy ...trunk@123 ...sintaksnya mungkin gagal dengan Path ...trunk@123 does not exist in revision 768(di mana 768repo terbaru), sedangkan -r 123akan melakukan hal yang benar. Jika diamati dengan klien SVN yang lebih lama, mungkin masih atau mungkin tidak demikian halnya dengan 1.6.
vladr
3
Argumen -rREV tidak selalu berhasil. Terkadang Anda membutuhkan @REV. Lihat stackoverflow.com/questions/6591938/…
Mojca
1
-r bekerja dengan svn, versi 1.7.13 (r1516569) di Mac OS X melalui Homebrew.
kakyo
35
$ svn copy http://svn.example.com/repos/calc/trunk@192 \
   http://svn.example.com/repos/calc/branches/my-calc-branch \
   -m "Creating a private branch of /calc/trunk."

Di mana 192 adalah revisi yang Anda tentukan

Anda dapat menemukan informasi ini dari Buku SVN , khususnya di sini di halaman tentang salinan svn

Dan McGrath
sumber
19

tambahkan revisi menggunakan karakter "@":

svn copy http://src@REV http://dev

Atau, gunakan argumen baris perintah -r [--revision].

Edward Q. Bridges
sumber
Terima kasih untuk ini. Tidak tahu apakah tanda kurung siku dari halaman manual diperlukan. Seharusnya mengira mereka menggunakan EBNF.
rstackhouse
0

Coba di bawah ini:

svn copy http://svn.example.com/repos/calc/trunk@rev-no 
       http://svn.example.com/repos/calc/branches/my-calc-branch 
  -m "Creating a private branch of /calc/trunk."  --parents

Tidak ada garis miring "\" di antara URL svn.

ShivaKumar
sumber