svn: cách tạo nhánh từ bản sửa đổi nhất định của thân


116

Hành động sau sẽ chỉ tạo một nhánh từ bản sửa đổi đầu của thân cây. Làm cách nào để tạo một nhánh từ một bản sửa đổi cụ thể? Cảm ơn.

$ 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."

2
Chỉ cần lưu ý rằng hai dấu xồ nguợc () đang có để bỏ qua ký tự xuống dòng ... và nó không phải là một phần của lệnh svn
Harry Lime

Câu trả lời:


163

Kiểm tra lệnh trợ giúp:

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

Để thực sự chỉ định điều này trên dòng lệnh bằng cách sử dụng ví dụ của bạn:

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

Đâu 123sẽ là số sửa đổi trong thân mà bạn muốn sao chép. Như những người khác đã lưu ý, bạn cũng có thể sử dụng cú pháp @. Cá nhân tôi thích sự tách biệt rõ ràng hơn của bản sửa đổi # khỏi URL.

Như đã lưu ý trong phần trợ giúp, bạn cũng có thể thay thế số sửa đổi bằng các từ nhất định:

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

Sẽ sao chép "bản sửa đổi ngay trước khi COMMITTED".


Ngoài ra, trong ví dụ trên, nếu bản sửa đổi 123không xảy ra bên dưới trunk, thì copy ...trunk@123 ...cú pháp có thể không thành công với Path ...trunk@123 does not exist in revision 768(đâu 768là bản mới nhất), ngược lại -r 123sẽ làm đúng. Quan sát với các máy khách SVN cũ hơn, có thể vẫn xảy ra trường hợp 1.6.
vladr

3
Đối số -rREV không phải lúc nào cũng hoạt động. Đôi khi bạn cần @REV. Xem stackoverflow.com/questions/6591938/…
Mojca

1
-r hoạt động với svn, phiên bản 1.7.13 (r1516569) trên Mac OS X thông qua 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."

192 là bản sửa đổi bạn chỉ định

Bạn có thể tìm thông tin này từ SVN Book , cụ thể là ở đây trên trang về svn copy


19

nối bản sửa đổi bằng ký tự "@":

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

Hoặc, sử dụng đối số dòng lệnh -r [--revision].


Cảm ơn vì điều đó. Không thể biết liệu dấu ngoặc vuông từ trang người đàn ông có được yêu cầu hay không. Đáng lẽ ra họ đã sử dụng EBNF.
rstackhouse

0

Hãy thử một bên dưới:

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

Không có dấu gạch chéo "\" giữa các URL svn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.