ฉันสามารถยกเลิกการเข้าสู่สาขาอื่นใน tfs 2008 ได้หรือไม่


105

สมมติว่านักพัฒนาบางคนในทีมของฉันระงับการเปลี่ยนแปลงของเขาที่เขาทำในสาขา A และฉันกำลังทำงานในสาขา B ฉันจะยกเลิกการเปลี่ยนแปลงในสาขา B ได้หรือไม่ (โดย GUI หรือพร้อมรับคำสั่ง)


การสาธิตคำสั่งดังกล่าว: ข้อมูลเบื้องต้นเกี่ยวกับคำสั่ง Unshelve
Rohit

คำตอบ:


129

ภาพเครื่องมือ Studio พลังงานควรจะปล่อยให้คุณทำเช่นนี้

C:\src\2\Merlin\Main>tfpt unshelve /?
tfpt unshelve - Unshelve into workspace with pending changes

Allows a shelveset to be unshelved into a workspace with pending changes.
Merges content between local and shelved changes. Allows migration of shelved
changes from one branch into another by rewriting server paths.

Usage: tfpt unshelve [shelvesetname[;username]] [/nobackup]
                     [/migrate /source:serverpath /target:serverpath]

 shelvesetname          The name of the shelveset to unshelve
 /nobackup              Skip the creation of a backup shelveset
 /migrate               Rewrite the server paths of the shelved items
                        (for example to unshelve into another branch)
 /source:serverpath     Source location for path rewrite (supply with /migrate)
 /target:serverpath     Target location for path rewrite (supply with /migrate)
 /nobackup              Skip the creation of a backup shelveset

ตัวอย่างเช่นในการรวมชุดชั้นวางที่เรียกว่า "Shelve Set Name" ที่สร้างบน Branch1 ถึง Branch2 ให้ใช้สิ่งนี้:

>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"

2
โอ๊ะ ... ห้วนฉันคิดว่าคุณทำให้วันของฉัน ฉันจะต้องลองในภายหลัง
สมุนไพร

คุณได้รับเครื่องมือไฟฟ้าจากที่ไหน?
กาย

3
ใช่เครื่องมือไฟฟ้าควรให้คุณทำสิ่งนี้ แต่น่าเสียดายที่การผสานผิดพลาดอย่างมากในแต่ละครั้งจึงไร้ประโยชน์
Tim Booker

การผสานไม่ได้แย่ขนาดนั้น ฉันพบว่าการผสานอัตโนมัติทำงานได้ 90% ของกรณี
Justin Rudd

2
เพิ่งลองใช้. ฉันย้ายไฟล์จำนวนมากภายในชั้นวางและน่าเสียดายที่ดูเหมือนว่าจะไม่ได้ผล คุณต้อง "ย้าย" ไฟล์เหล่านี้ทั้งหมดด้วยตนเอง (ไม่มีการเลือกหลายรายการ) จากนั้นจะถูกเพิ่มเป็นไฟล์ใหม่ในพื้นที่ทำงาน ฉันไม่สามารถใช้มันได้เพราะฉันไม่สามารถผสานมันได้อีกต่อไป
Stefan Steinegger

34

ทางเลือกอื่นสำหรับ tfpt ที่หลีกเลี่ยงการรวมไฟล์แต่ละไฟล์ด้วยตนเอง

ปัญหาเกี่ยวกับเครื่องมือ TFS อำนาจคือการที่คุณกำลังทำ 'ผสานไม่มีมูลความจริง' จึงต้องยืนยันทุกไฟล์ ฉันมีชุดชั้นวางของไฟล์มากกว่า 800 ไฟล์และฉันไม่เคยไว้ใจปุ่ม 'ผสานอัตโนมัติ' และไม่ต้องการเปิดไฟล์แต่ละไฟล์ - ดังนั้นฉันจึงต้องหาวิธีอื่น!

  • ดาวน์โหลดและติดตั้งTFS shelveset เพื่อนสนิท
  • เครื่องมือจะปรากฏภายใต้ 'Tools' ใน VS2010
  • เรียกใช้เครื่องมือ 'Shelveset Sidekick' คลิกค้นหาเพื่อแสดงชุดชั้นวาง
  • คลิกขวาที่ชั้นวางของคุณแล้วเลือก 'ส่งออกชั้นวางของ'
  • บันทึกลงในตำแหน่งว่างเช่น C:\temp\shelveset-name
  • ตอนนี้มีโครงสร้างไดเร็กทอรีที่สมบูรณ์ซึ่งมีเพียงไฟล์ใหม่

(หมายเหตุ: ไม่มีแถบความคืบหน้าเมื่อส่งออก - ดังนั้นหากคุณมีชุดชั้นวางขนาดใหญ่ที่ใช้เวลานานในการส่งออกคุณจะต้องตรวจสอบใน Windows Explorer (ไฟล์> คุณสมบัติ> ขนาด) ว่าไฟล์ยังคงลงมาหากคุณ คิดว่ามันแข็ง)

ตอนนี้คุณต้องคัดลอกไปยังสาขาใหม่ด้วย Windows Explorer

สิ่งนี้ใช้ได้ผลสำหรับฉัน:

  • ตรวจสอบโซลูชันทั้งหมดก่อน (ในสาขาใหม่)
  • ปิดโซลูชันนั้น
  • ใช้ TFS ออฟไลน์จากภายใน VS ( เครื่องมือในการทำสิ่งนี้ ) - ดูด้านล่างว่าเหตุใดจึงสำคัญ ...
  • คัดลอกไฟล์ใน Windows Explorer โครงสร้างไดเร็กทอรีในc:\temp\shelveset-nameจะต้องถูกเปลี่ยนชื่อเพื่อให้สอดคล้องกับสาขาใหม่ เคล็ดลับ: อย่าลืมคัดลอกไปถูกที่ !!!
  • นำ VS ออนไลน์
  • ควรค้นหาการเปลี่ยนแปลงทั้งหมดและเพิ่มไฟล์ใหม่
  • หากระบบขอให้คุณผูก sourcecontrol โปรดตรวจสอบว่าเส้นทางนั้นถูกต้องสำหรับสาขาใหม่
  • ทดสอบ - แล้วตรวจสอบไฟล์ใหม่

สำคัญ: ฉันพบว่าหากคุณไม่ใช้ TFS ออฟไลน์ก่อนคุณจะพบไฟล์ใหม่ ๆ (จากชุดการเปลี่ยนแปลงที่ไม่มีชั้นวางของคุณ) ที่แสดงโดยไม่มีเครื่องหมายถูกสีแดงเล็กน้อยและคุณจะต้องยกเว้นและรวมไว้อีกครั้ง เพื่อให้พวกเขาเพิ่ม หากใครมีทางเลือกอื่นในการแก้ปัญหานี้ฉันอยากรู้ - การรีเฟรชดูเหมือนจะไม่ได้ผล


วิธีนี้ง่ายกว่าสำหรับชั้นวางขนาดใหญ่และเป็นวิธีที่ฉันทำตาม ขอบคุณ!
Ani

วิธีนี้ดีกว่าจริงๆสำหรับชั้นวางที่ใหญ่กว่า
Aamir

คุณอาจหนีไปได้โดยไม่ต้องใช้ TFS ออฟไลน์ แต่ฉันไม่แน่ใจว่ามันจะคุ้มค่า สิ่งที่ฉันทำคือเรียกใช้การเปรียบเทียบ - ใน Source Control Explorer จากเมนูบริบทที่เปิดขึ้นในโฟลเดอร์ที่เกี่ยวข้อง หนึ่งสามารถกรองผลลัพธ์เพื่อแสดงเฉพาะรายการที่แตกต่างกัน จากนั้นจะอนุญาตให้ทำการเลือกหลายรายการและตรวจสอบทั้งหมดพร้อมกัน แต่ฉันเดาว่าการใช้ TFS ออฟไลน์นั้นเร็วและง่ายกว่านั้น
ทำเครื่องหมาย

น่าเสียดายที่สิ่งนี้ใช้ไม่ได้กับฉันเมื่อฉัน "เพิ่ม" การเปลี่ยนแปลงในชุดชั้นวาง ฉันได้รับข้อผิดพลาด "ไม่สามารถดึงไฟล์ที่จัดเก็บข้อมูลได้จำเป็นต้องมีการเปลี่ยนแปลงที่รอดำเนินการในชั้นวาง"
John Saunders

@JohnSaunders คุณหมายถึงชั้นวางที่มีการเพิ่มหรือเพิ่มโดยเฉพาะ? ฉันไม่จำเป็นต้องทำสิ่งนี้มาหลายปีแล้ว :)
Simon_Weaver

1

ข้อมูลชั้นวางรวมถึงเส้นทางเฉพาะที่จะไป น่าเสียดายที่ฉันไม่รู้วิธีอัตโนมัติใด ๆ ในการปลดชั้นวางไปยังสถานที่อื่นนอกเหนือจากที่อยู่ในชั้นวาง ครั้งที่ฉันต้องการทำเช่นนี้ฉันต้องตรวจสอบไฟล์ที่เทียบเท่าในสาขาใหม่โดยไม่ได้รับการจัดวางจากสาขาเก่าจากนั้นคัดลอกไฟล์ด้วยตนเอง

แก้ไข: ฉันเดาว่าฉันทำมันยาก ฉันจะต้องลองใช้วิธีแก้ปัญหาของ Curt :)


0

ฉันใช้เวลาพอสมควรในการทำสิ่งนี้ให้สำเร็จและมีปัญหาเล็กน้อยที่ต้องเอาชนะ เป็นไปได้ แต่ที่นี่มีปัญหาเล็กน้อยและกฎบางประการที่ต้องปฏิบัติตามเพื่อหลีกเลี่ยงปัญหาเหล่านี้

ข้อผิดพลาด:

ไม่สามารถระบุพื้นที่ทำงานได้

โดยเฉพาะอย่างยิ่งปัญหานี้ถูกแก้ไขโดยใช้คำสั่งจากแหล่งโฟลเดอร์รากสาขา สิ่งนี้ตรงกันข้ามกับคำตอบบางคำใน SO ที่พวกเขาบอกว่าให้ใช้ "target" branch - ไม่ใช้ "source":

cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"

ปัญหาที่สองปรากฏหลังจากนี้ ดูเหมือนว่ามันไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ TFS สิ่งที่ฉันรู้ฉันติดตั้ง VS หลายตัวและเชื่อมต่อกับเซิร์ฟเวอร์ TFS ที่แตกต่างกัน ฉันใช้ VS12 และฉันมีพื้นที่ทำงานและการเชื่อมต่อเซิร์ฟเวอร์ แต่ฉันไม่ทราบว่าต้องจำลองการเชื่อมต่อเดียวกันใน VS13 เพื่อให้ TFPT2013 ทำงานได้ เชื่อมต่อกับเซิร์ฟเวอร์และพื้นที่ทำงานเดียวกัน

ฉันยังลองทำโดยใช้ TFPT2015 แต่ฉันติดตั้งแล้วและไม่ได้ติดตั้ง TFPT.exe จึงไร้ประโยชน์ ดังนั้นฉันจึงลองจาก TFPT2013 เป็น TFS2015 และมันใช้ได้กับคำสั่งนี้โดยเฉพาะ ฉันสงสัยว่าทำไมไม่ถ้า VS12 / 13 ทำงานได้ดีกับ TFS2015?

เพื่อสรุป

  • ใช้ CMD หรือ DevCMD - ไม่สำคัญ
  • เรียกใช้คำสั่งจากแหล่งโฟลเดอร์รากสาขา
  • ตรวจสอบการเชื่อมต่อ Team Explorer Server สำหรับ VS เฉพาะ
  • TF Power Tools 2013 ทำงานกับ TFS v15 ตัวเลือกการโยกย้ายอย่างน้อยก็ใช้งานได้

0

สามารถใช้ขั้นตอนต่อไปนี้สำหรับชั้นวางขนาดเล็ก (~ 20 ไฟล์หรือน้อยกว่า)

  1. บนชั้นวางและสาขาเป้าหมายเริ่มต้นด้วยการเช็คอินหรือย้อนกลับการอัปเดตที่รอดำเนินการทั้งหมด
  2. ในสาขาชุดชั้นวางให้ปลดชั้นวางไฟล์จากชุดชั้นวางที่เกี่ยวข้อง
  3. ในสาขาเป้าหมายเช็คเอาต์ไฟล์ที่มีอยู่ซึ่งอยู่ในชั้นวางที่ไม่มีชั้นวาง
  4. เปรียบเทียบไฟล์ที่ไม่มีการแบ่งชั้นบนชุดชั้นวางกับที่อยู่ในสาขาเป้าหมายเพื่อระบุไฟล์ที่ต้องการการอัปเดตรวม (ถ้ามี)
  5. หากจำเป็นให้ทำการรวมอัพเดตกับไฟล์ที่เกี่ยวข้องของขั้นตอนก่อนหน้าด้วยตนเองและบันทึกไฟล์เหล่านี้ในพื้นที่ทำงานสาขาเป้าหมาย
  6. คัดลอกไฟล์ชุดชั้นวางอื่น ๆ จากพื้นที่ทำงานสาขาชั้นวางไปยังพื้นที่ทำงานสาขาเป้าหมาย
  7. เปรียบเทียบไฟล์ที่อัพเดตใหม่ในพื้นที่ทำงานสาขาเป้าหมายกับไฟล์ที่เช็คอิน ทำการแก้ไขตามความจำเป็น
  8. ตรวจสอบไฟล์ที่อัปเดตใหม่ในสาขาเป้าหมาย
  9. ย้อนกลับไฟล์ที่ไม่มีการจัดวางในสาขาชั้นวาง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.