svn: วิธีสร้างสาขาจากการแก้ไขลำตัวบางส่วน


116

การดำเนินการต่อไปนี้จะสร้างสาขาจากการแก้ไขส่วนหัวของลำต้นเท่านั้น ฉันจะสร้างสาขาจากการแก้ไขเฉพาะได้อย่างไร ขอบคุณ

$ 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
โปรดทราบว่าเครื่องหมายแบ็กสแลชสองตัว () อยู่ที่นั่นเพื่อละเว้นอักขระขึ้นบรรทัดใหม่ ... และไม่ใช่ส่วนหนึ่งของคำสั่ง svn
Harry Lime

คำตอบ:


163

ตรวจสอบคำสั่งช่วยเหลือ:

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

หากต้องการระบุสิ่งนี้ในบรรทัดคำสั่งโดยใช้ตัวอย่างของคุณ:

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

ไหน123จะเป็นตัวเลขการปรับปรุงแก้ไขในลำต้นคุณต้องการคัดลอก ดังที่ผู้อื่นได้กล่าวไว้คุณสามารถใช้ไวยากรณ์ @ ได้เช่นกัน ฉันชอบการแยกการแก้ไข # ออกจาก URL โดยส่วนตัวอย่างชัดเจน

ดังที่ระบุไว้ในความช่วยเหลือคุณสามารถแทนที่การแก้ไข # ด้วยคำบางคำได้เช่นกัน:

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

จะคัดลอก "การแก้ไขก่อน COMMITTED"


นอกจากนี้ในตัวอย่างข้างต้นหากการแก้ไข123ไม่เกิดขึ้นข้างใต้แสดงtrunkว่าไฟล์copy ...trunk@123 ...ไวยากรณ์อาจล้มเหลวด้วยPath ...trunk@123 does not exist in revision 768(ที่768เป็นธุรกรรมซื้อคืนภาคล่าสุด) ในขณะที่-r 123จะทำสิ่งที่ถูกต้อง สังเกตได้จากไคลเอนต์ SVN รุ่นเก่าอาจใช่หรือไม่ใช่ในกรณี 1.6
vladr

3
อาร์กิวเมนต์ -rREV ไม่ได้ผลเสมอไป บางครั้งคุณต้อง @REV ดูstackoverflow.com/questions/6591938/…
Mojca

1
-r ทำงานร่วมกับ svn เวอร์ชัน 1.7.13 (r1516569) บน Mac OS X ผ่าน 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 การแก้ไขที่คุณระบุ

คุณสามารถค้นหาข้อมูลนี้ได้จากSVN Bookโดยเฉพาะที่นี่ในหน้าเกี่ยวกับสำเนา svn


19

ต่อท้ายการแก้ไขโดยใช้อักขระ "@":

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

หรือใช้อาร์กิวเมนต์บรรทัดคำสั่ง -r [--revision]


ขอบคุณสำหรับสิ่งนี้. ไม่สามารถบอกได้ว่าต้องใช้วงเล็บเหลี่ยมจากหน้าคน ควรคิดว่าพวกเขาใช้ EBNF
rstackhouse

0

ลองด้านล่าง:

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

ไม่มีเครื่องหมายทับ "\" ระหว่าง svn URL

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.