คุณจะหลีกเลี่ยงการทำงานผิดสาขาได้อย่างไร


27

ความระมัดระวังมักเพียงพอที่จะป้องกันปัญหา แต่บางครั้งฉันต้องตรวจสอบสาขาที่ฉันกำลังทำงานอยู่ ( เช่น "อืม ... ฉันอยู่ในdevสาขาใช่มั้ย") โดยการตรวจสอบเส้นทางการควบคุมของแหล่งสุ่ม ไฟล์.

ในการมองหาวิธีที่ง่ายขึ้นฉันคิดว่าตั้งชื่อไฟล์โซลูชันตามนั้น ( เช่น MySolution_Dev.sln ) แต่ด้วยชื่อไฟล์ที่แตกต่างกันในแต่ละสาขาฉันไม่สามารถรวมไฟล์โซลูชันได้

มันไม่ได้เป็นเรื่องใหญ่ แต่มีวิธีการหรือ "เคล็ดลับเล็ก ๆ " ที่คุณใช้เพื่อให้แน่ใจว่าคุณอยู่ในสาขาที่ถูกต้องหรือไม่? ฉันใช้ Visual Studio 2010 กับ TFS 2008


2
ฟังดูเหมือนเป็นตัวเลือกที่ดีสำหรับส่วนขยายของ VS 2010 ที่จะเขียนซึ่งทำให้คิวภาพที่สามารถกำหนดค่าได้บางอย่างสามารถระบุสาขาได้ บางทีการทำให้พื้นหลังของ Solution Explorer เป็นสีตามการตั้งค่าผู้ใช้ (ฉันทำสีเขียวสำหรับ Dev, สีเหลืองสำหรับ QA และสีแดงสำหรับ Prod)
Jesse C. Slicer

แนวคิดที่ดีแม้แต่ตัวบ่งชี้บนแถบชื่อเรื่อง VS ก็ช่วยได้
henginy

1
ฉันจะบอกว่าควรจะมีประสิทธิภาพสวย ฉันมี bash prompt ของฉันตั้งให้รวมสาขา git ของฉันและไม่ว่าจะเป็นไฟล์ต้นฉบับที่มีความสะอาดหรือว่าพวกเขาต้องการการตรวจสอบ
Daenyth

TFS ไม่มีสิ่งที่เทียบเท่าgit statusหรือhg statusไม่?

ฉันใช้ส่วนติดต่อผู้ใช้ VS สำหรับการดำเนินการ TFS ดังนั้นฉันจึงไม่มีความคิด
henginy

คำตอบ:


16

ฉันใช้http://visualstudiogallery.msdn.microsoft.com/f3f23845-5b1e-4811-882f-60b7181fa6d6นี้

อัปเดตชื่อของคุณเป็น:

การพัฒนา \ โครงการของฉัน

หรือ

หน้าหลัก \ myproject

หรือ

ปล่อย \ myproject

หวังว่ามันจะช่วย


ที่ดูเหมือนว่าจะทำมันฉันจะให้มันลอง ..
henginy

ฉันใช้ส่วนขยายนี้เพื่อจุดประสงค์นี้อย่างแน่นอน อันที่จริงฉันกำลังจะโพสต์ลิงค์เมื่อฉันเห็นว่ามีนกอยู่แล้ว
Bobson

1
ฉันลงเอยด้วยการใช้อันนี้เพราะฉันสามารถเห็นมันในชื่อที่ฉันเป็นสาขา ยอดเยี่ยมจริงๆ !!!
Piotr Kula

ใช่มันสะดวกมาก ๆ !
henginy

16

ตั้งชื่อไดเรกทอรีทำงานต่าง ๆ นั่นคือถ้าโครงการของคุณมีชื่อว่า "MY_PROJECT" ให้สร้างไดเรกทอรีการทำงานที่แตกต่างกันสำหรับแต่ละสาขา หากมีหนึ่งสาขาชื่อ "dev" คุณจะต้องมีไดเรกทอรีสำหรับ trunk และไดเรกทอรีสำหรับ dev เช่นนี้

~/henginy/projects/MY_PROJECT-trunk
~/henginy/projects/MY_PROJECT-dev

ไดเรกทอรีการทำงานจริง ๆ แล้วมีชื่อต่างกัน แต่ด้วย Visual Studio ที่เปิดอยู่แล้ว (เช่นหลังจากฉันหยุดพักดื่มกาแฟและกลับไปที่โต๊ะทำงานของฉัน) ฉันต้องตรวจสอบเส้นทางของไฟล์เพื่อดูไดเรกทอรี ดังนั้นฉันคิดว่ามันเป็นวิธีที่ง่ายที่สุดและไม่มีทางหนีจากที่นั่นได้?
henginy

2
@ henginy นั่นเป็นคำอธิบายที่ดี เพื่อตรวจสอบว่าใน Visual Studio ฉันวางเมาส์เหนือแท็บของไฟล์ที่เปิด มันจะแสดงคำแนะนำเครื่องมือของเส้นทางระบบไฟล์แบบเต็มซึ่งฉันสามารถตรวจสอบว่ารากเป็น "-dev" หรือ "-trunk" ลองและดูว่าเหมาะกับคุณหรือไม่
Matthew Rodatus

1
ใช่ว่าเป็นวิธีการที่ฉัน "ตรวจสอบเส้นทางการควบคุมแหล่งที่มาของไฟล์สุ่ม" และฉันพยายามที่จะหาวิธีที่รวดเร็ว :)
henginy

@henginy โอ้ใช่ คุณบอกว่าใน OP ฉันไม่รู้วิธีที่ดีกว่าบนหัวของฉัน ฟังดูเหมือนฉันยังไม่ได้ปรับปรุงสถานการณ์ของคุณเลย :-(
Matthew Rodatus

ฉันควรชี้แจงให้ดีขึ้นในคำถามของฉัน ขอขอบคุณสำหรับความช่วยเหลือของคุณ!
henginy

8

ฉันไม่ทำงานใน dev ทั่วไปหรือสาขาลำต้น

ฉันทำงานในสาขาฟีเจอร์เสมอ เมื่อคุณสมบัติเสร็จสิ้นฉันทำตามขั้นตอนเหล่านี้

  1. Open Explorer การควบคุมแหล่งที่มา
  2. ผสานจาก dev เข้ากับสาขาฟีเจอร์ปัจจุบัน
  3. แก้ไขข้อขัดแย้งใด ๆ และทำให้มั่นใจว่าทุกอย่างยังทำงานได้
  4. เช็คอินอีกครั้ง ผสานคุณสมบัติเข้ากับสาขา dev
  5. เปิดโซลูชัน dev
  6. สาขาเช็คอินเดฟ
  7. โซลูชัน dev ใกล้
  8. ให้ CI สร้างและปรับใช้

ฉันเพิ่งเปิดสาขา dev เพียงไม่กี่นาทีต่อครั้งและปิดทันที


7

คุณสามารถสร้างไฟล์ว่างเปล่าในแต่ละสาขาเช่น This_IS_TRUNK.txt แบบ trunk และ This_IS_DEV.txt ใน DEV


2
ที่อาจใช้งานได้จริง .. โดยเฉพาะอย่างยิ่งกับขีดล่างหน้าชื่อไฟล์เพื่อเลื่อนขึ้นในตัวสำรวจโซลูชัน
henginy

6

ฉันทำงาน VCS จำนวนมากของฉันจากบรรทัดคำสั่ง ฉันขอแนะนำให้คุณแสดงข้อความที่คุณอยู่ ตัวอย่างเช่นพรอมต์ของฉันเมื่ออยู่ใน repo Git ดูเหมือนว่า (ฉันทำเช่นนี้สำหรับ SVN ด้วย):

[BranchName]RepoTop/path/to/current/wd >>

และถ้า repo นั้นกำลังสกปรก (การเปลี่ยนแปลงที่ไม่ผูกมัด):

[BranchName!!]RepoTop/path/to/current/wd >>

ฉันยังมีพื้นหลังตั้งเป็นสีแดงหากเข้าสู่ระบบผลิตสิ่งเช่นนั้น ฉันพบว่าการแจ้งเตือนด้วยภาพที่เรียบง่ายมีประสิทธิภาพสูงสุด

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


4

มีส่วนขยายของ Visual Studio ฟรีชื่อTFS Solution Infoที่อาจช่วยได้ มันแสดงให้คุณเห็นสาขาและพื้นที่ทำงานปัจจุบันในหน้าต่างเล็ก ๆ ที่คุณสามารถเชื่อมต่อ / ปักได้ทุกที่ที่คุณต้องการ


ดูดี แต่ไม่รองรับ VS2012
Piotr Kula

3

ฉันใช้ส่วนขยายVSCommands (ด้วย Visual Studio 2012 แต่มีรุ่น 2010) และมันทำให้ชื่อสาขาอยู่ในมุมบนซ้ายของหน้าจอรวมทั้งใน explorer โซลูชันได้อย่างสะดวก

ไม่มีส่วนเกี่ยวข้องกับผลิตภัณฑ์ แต่อย่างใดเพียงแค่ผู้ใช้ที่มีความสุข


1
มันดูไม่ดีเลยน่าเศร้าที่คุณต้องจ่ายสำหรับสิ่งพิเศษทั้งหมดที่อาจไม่จำเป็น :(
Piotr Kula

2

ผมหลีกเลี่ยงการทำงานในสาขาที่ไม่ถูกต้องโดยการทำเกือบทุกอย่างในหนึ่งสาขา (ในลำต้น - ต่อเรียกว่า "ลำต้นไม่เสถียร" แยกทางกลยุทธ์ )

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

  • ฉันยังโชคดีที่ส่วนใหญ่ของการจัดการโครงการของฉันต้องการโน้มน้าวใจลูกค้าให้ใช้รุ่นที่ใหม่กว่าแทนที่จะทำการปรับปรุงแบบเก่าซึ่งจะทำให้ส่วนหลังการผลิตของการอัปเดตในสาขาเหลือน้อยมาก

เป็นเรื่องดีที่ไม่ต้องรักษารุ่นก่อนหน้า ในกรณีนี้ฉันจะใช้สาขาเพื่อการทดลองเท่านั้นฉันเดา
henginy

@ henginy ฉันจำไม่ได้ว่ากรณีใดเมื่อฉันมีความหรูหราที่ไม่ต้องรักษารุ่นก่อนหน้าเลย อย่างไรก็ตามทัศนคติการจัดการสามารถสร้างความแตกต่างได้ที่นี่: ขึ้นอยู่กับว่าใครสามารถใช้ 1-2 โปรแกรมแก้ไขด่วน / ปีในสาขาที่เก่ากว่าหรือยุ่งกับครึ่งเหล่านี้ตลอดเวลา
ริ้น

1

คำตอบเฉพาะนั้นขึ้นอยู่กับซอฟต์แวร์ควบคุมเวอร์ชันที่คุณใช้อยู่ แต่โดยทั่วไปจะมีคำสั่งที่ให้คุณดูสาขาที่คุณกำลังทำงานอยู่ได้อย่างง่ายดาย ตัวอย่างเช่นด้วยการโค่นล้มใช้svn infoคำสั่งในไดเรกทอรีเพื่อดู URL สำหรับสาขานั้น หากคุณสนใจไฟล์ใดไฟล์หนึ่งมากขึ้นคุณสามารถระบุได้เช่นกัน:

caleb-dev$ svn info foo.c 
Path: foo.c
Name: foo.c
URL: https://svn.mycompany.com/repo/sample/branches/caleb-dev/foo.c
Repository Root: https://svn.mycompany.com/repo/sample
Repository UUID: d62f7aef-3ad2-6098-12a-c16647d854ab
Revision: 1042
Node Kind: file
Schedule: normal
Last Changed Author: caleb
Last Changed Rev: 1031
Last Changed Date: 2011-06-07 15:28:27 -0400 (Tue, 07 Jun 2011)
Text Last Updated: 2011-06-08 03:08:12 -0400 (Wed, 08 Jun 2011)
Checksum: 123456789098765432123456789098

จาก URL ฉันเห็นว่าสำเนา foo.c ของฉันอยู่ในสาขา caleb-dev

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


1

มีคำตอบมากมายที่นี่ แต่ไม่มีผู้ใดที่สัมผัสกับวิธีแก้ปัญหาง่ายๆที่เรามีในที่ทำงานของฉัน: สำหรับแต่ละสาขาสร้าง VM ใหม่ที่มีสภาพแวดล้อมแบบ dev และตรวจสอบจากสาขาที่เหมาะสม คุณต้องทำสิ่งนั้นและทำให้ถูกต้องครั้งเดียวจากนั้นคุณเพียงสลับ VMs เพื่อสลับสาขา

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