TFS 2010 ตรวจจับการเปลี่ยนแปลงที่ทำกับไฟล์ภายนอก Visual Studio ได้อย่างไร


118

ฉันใช้ Team Foundation Server 2010 กับ Visual Studio 2010

เมื่อใดก็ตามที่ฉันแก้ไขไฟล์ภายนอก Visual Studio ดูเหมือนว่า TFS จะตรวจไม่พบการเปลี่ยนแปลงที่เกิดขึ้นกับไฟล์ดังนั้นจึงไม่มีตัวเลือกให้ฉันเช็คอินไฟล์หลังจากที่แก้ไขแล้ว

จะแก้ไขได้อย่างไร?


18
การโค่นล้มหรือ Git (และอื่น ๆ ) กำลังเปรียบเทียบการแฮชของไฟล์แทน API เพื่อตรวจสอบไฟล์เข้า / ออก ง่ายกว่ามากและเสี่ยงน้อยกว่ามาก!
Steve B

8
TFS ที่แย่กว่านั้นไม่ได้สังเกตว่าต้องเช็คอินไฟล์ที่เปลี่ยนแปลงด้วยซ้ำดังนั้นคุณมักจะลืมมันไป .. จนกว่าเพื่อนร่วมงานของคุณจะตรวจสอบและตระหนักว่าโค้ดของคุณไม่ได้รวบรวมหรือทำงาน ไม่น่าแปลกใจที่มีคนบอกว่า TFS เป็น "VSS บนเตียรอยด์" - ดีกว่า แต่ก็ยังมีปัญหาของ VSS มากมาย
gbjbaanb

VSS เป็นเตียรอยด์ในลักษณะเดียวกับที่สเตียรอยด์ทำลายร่างกายของคุณ
Ian Kemp

คำตอบ:


48

หากคุณมีการเชื่อมต่อเครือข่ายกับเซิร์ฟเวอร์ของคุณในขณะที่คุณทำงานนอก Visual Studio คุณควรดำเนินการต่อและตรวจสอบไฟล์ก่อนแก้ไขโดยใช้ไคลเอนต์บรรทัดคำสั่ง tf หรือใช้การรวมเชลล์ Windows Explorer ที่มีอยู่ในเครื่องมือ TFS พลังงานปล่อย (รวมถึงเครื่องมืออื่น ๆ ที่เพิ่มขึ้นมีการรวม TFS ที่ทำให้สิ่งนี้เป็นไปโดยอัตโนมัติ แต่ถ้าคุณแค่ใช้ notepad ก็ยังต้องเป็นขั้นตอนด้วยตนเอง)

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

หากคุณทราบว่าคุณได้แก้ไขไฟล์ใดคุณสามารถตรวจสอบได้จากภายใน Visual Studio จากนั้นคุณจะสามารถกลับมาตรวจสอบได้

หากคุณไม่ทราบว่าคุณได้แก้ไขไฟล์ใดคุณสามารถตรวจจับการเปลี่ยนแปลงได้โดยการเรียกใช้tfpt onlineคำสั่ง (ซึ่งเป็นส่วนหนึ่งของรุ่น Power Tools) สิ่งนี้จะค้นหาไฟล์ที่ได้รับการแก้ไขในเครื่องและตรวจสอบไฟล์เหล่านี้จากเซิร์ฟเวอร์


Visual Studio ดูเหมือนจะไม่ตรวจพบการเปลี่ยนแปลงในไฟล์เพียงแค่ตรวจสอบ ฉันเพิ่งลองตรวจสอบโฟลเดอร์และเนื้อหาปรากฏขึ้นในการเปลี่ยนแปลงที่รอดำเนินการตามการแก้ไข จากนั้นฉันลบโฟลเดอร์ใน File Explorer และรีเฟรชการเปลี่ยนแปลงที่รอดำเนินการ แต่ Visual Studio ไม่ได้บอกว่าไฟล์ถูกลบในการเปลี่ยนแปลงที่รอดำเนินการ นอกจากนี้ไฟล์ยังคงอยู่ใน Solution Explorer
Kyle Delaney

160

TFS มีคำสั่ง "Reconcile" สำหรับสิ่งนี้:

  1. เปิดSource Control Explorer
  2. คลิกขวาที่โฟลเดอร์ที่มีการเปลี่ยนแปลงแล้วเลือกเปรียบเทียบ
  3. เลือกไฟล์ที่คุณต้องการกระทบยอด (กดCTRL+ Aเพื่อเลือกไฟล์ทั้งหมด)
  4. คลิกที่ปุ่มกระทบยอด
  5. ตั้งค่าตัวเลือกในไดอะล็อกReconcile Folder Differences ตรวจสอบให้แน่ใจไฟล์ที่ไม่ได้มีการเปลี่ยนแปลงที่อยู่ระหว่างดำเนินการตั้งค่าเพื่อตรวจสอบ
  6. คลิกตกลง
  7. หากคุณมีการเปลี่ยนแปลงท้องถิ่นตรวจสอบออกมาโต้ตอบจะแสดง ตั้งค่าประเภทการล็อกที่ต้องการ
  8. คลิกที่เช็คเอาท์

กระทบความแตกต่างของโฟลเดอร์

ดูเพิ่มเติม: กระทบยอดความแตกต่างระหว่างโฟลเดอร์


13
นี่เป็นคำตอบที่ดีที่สุดเนื่องจากไม่ต้องใช้บรรทัดคำสั่งหรือ 'ยกเลิกการเปลี่ยนแปลงที่รอดำเนินการ' ที่มีความเสี่ยง
NickH

4
บันทึกวันของฉัน! ฉันทำตามขั้นตอนของคุณอย่างแม่นยำและได้ผลตามที่คาดไว้ :-)
กิลาดบาร์เนอร์

4
ทำงานตามที่อธิบายไว้ น่าจะเป็นคำตอบที่ดีที่สุด.
Nicolas

น่าเสียดายที่เมื่อทำสิ่งนี้ในโครงการทั้งหมดของฉันฉันได้รับข้อผิดพลาดเส้นทางที่ระบุชื่อไฟล์หรือทั้งสองอย่างยาวเกินไป ชื่อแบบเต็มต้องมีความยาวน้อยกว่า 260 อักขระและชื่อไดเร็กทอรีต้องน้อยกว่า 248 อักขระ การเลือกแต่ละโฟลเดอร์ไม่ใช่ทางเลือกสำหรับฉันเพราะฉันจำไดเร็กทอรีไฟล์ทั้งหมดที่เปลี่ยนไปไม่ได้ ความคิดใด ๆ ?
kraftwer1

2
ทำงานได้อย่างสมบูรณ์ใน VS 2015 อัปเดต 3 ขอบคุณมาก ควรเป็นคำตอบที่ดีที่สุดไม่มีคำสั่งที่ยุ่งยากเพื่อให้ใช้งานได้
Nicolas Leucci

35

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

tfpt online /adds /deletes /diff /noprompt /recursive directory-name

(โดยที่ชื่อไดเร็กทอรีคือพา ธ ไปยังไดเร็กทอรีที่จะอัพเดตมิฉะนั้นจะตรวจพบการเปลี่ยนแปลงทั่วทั้งที่เก็บ TFS ของคุณ)

หากคุณต้องการทราบว่าจะทำอย่างไรโดยที่ไม่ได้ทำการเปลี่ยนแปลงใด ๆ จริงๆคุณสามารถบังคับให้ดำเนินการแบบแห้งได้โดยการเพิ่ม/previewสวิตช์


ขอบคุณสำหรับเคล็ดลับ @Adam Batkin ทำงานอย่างมีเสน่ห์และตอนนี้ฉันได้รับการแก้ไขแล้ว! +1
iOnline247

9
ระวังบรรทัดคำสั่งนี้จะรวมไฟล์ที่ไม่ต้องการไว้ด้วย: * .user, BIN \, obj ฯลฯ ...
Steve B

1
ไชโยฉันกำลังมองหาวิธีบรรทัดคำสั่งดังนั้นฉันจึงสามารถอัปเดต TFS ของ บริษัท โดยอัตโนมัติจาก Git repo ในพื้นที่ของฉัน!
Mark K Cowan

2
@SteveB มี/exclude:fld_name/*,filenameสวิตช์ที่สามารถใช้สำหรับการยกเว้นไฟล์ที่ไม่ต้องการ.. ที่ทำให้ฉันหยุดลงมาก
Kresimir Pendic

1
ฉันทำงานแบบนี้tfpt online /deletes /noprompt /recursive directory-nameและมีไฟล์เป็นพันไฟล์ที่จะถูก `เปลี่ยนแปลง 'ดังนั้นต้องเลิกทำ แต่ฉันไม่เคยสัมผัสสิ่งเหล่านี้เลยเพียงแค่ลบโฟลเดอร์
Dzmitry Lahoda

16
*1- make changes outside of Visual Studio
2- go to Visual Studio and open Source Control Explorer
3- right click on the folder > "Check Out for Edit" > "Check Out"
4- right click on the same folder > "Undo Pending Changes..." > "Undo changes" > "No to All"*

ฉันทดสอบวิธีแก้ปัญหานี้กับสาขาและมันช่วยฉันได้มาก แต่มีเพียงไฟล์ใหม่และโฟลเดอร์ใหม่ที่ต้องดำเนินการด้วยตนเอง

ฉันแนะนำให้สร้างสาขาก่อนการดำเนินการ มันแยกคุณเวลาของการดำเนินการ

หมายเหตุ: เทคนิคนี้ยังใช้การล้างไฟล์ที่เหมือนกันซึ่ง TFS จะทำเครื่องหมายว่าแก้ไขเสมอ


3
นี่ควรเป็นความคิดเห็นในโพสต์ของalgaไม่ใช่คำตอบใหม่ ไม่ว่าในกรณีใดฉันยังคงแนะนำให้ไม่ทำสิ่งนี้ด้วยเหตุผลเดียวกับที่ฉันแนะนำเมื่อสาหร่ายแนะนำไว้ข้างต้น
Edward Thomson

สุดยอดมาก! สิ่งที่ฉันกำลังมองหา (หลังจาก บริษัท ของเราย้ายเซิร์ฟเวอร์ TFS ของเราและ TFS / VS2010 ก็งงงัน) ตอนนี้ฉันเพิ่งเช็คเอาต์ไฟล์ที่แก้ไขแล้ว ขอบคุณ!
Mike Gledhill

วิธีนี้ได้ผล แต่ MS ควรให้วิธีที่ดีกว่าในการดำเนินการนี้ ไม่จำเป็นต้องใช้บรรทัดคำสั่งและแฮ็กในผลิตภัณฑ์ที่ดี (โดยเฉพาะอย่างยิ่งหากสิ่งนี้ฝังอยู่ใน VS) SVN และ Mercurial ทำเพื่อความสนุก ...
user2173353

แทนที่จะใช้จุด 4 คุณสามารถใช้ tfpt uu stackoverflow.com/a/544285/10245
Tim Abell

นี่เป็นการยกเลิกสิ่งที่คุณทำ ไม่ได้ทำให้ Visual Studio ทราบถึงสิ่งที่คุณทำ
Kyle Delaney

7

ลองทำตามนี้ เป็นวิธีแก้ปัญหาบางอย่าง แต่ใช้งานได้:

  1. ทำการเปลี่ยนแปลงภายนอก Visual Studio
  2. ไปที่ Visual Studio และเปิด Source Control Explorer
  3. คลิกขวาที่โฟลเดอร์> "Check Out for Edit" > "Check Out"
  4. คลิกขวาที่โฟลเดอร์เดียวกัน> "เลิกทำการเปลี่ยนแปลงที่รอดำเนินการ ... " > "เลิกทำการเปลี่ยนแปลง" > " ไม่ทั้งหมด "

แค่นั้นแหละ. การเปลี่ยนแปลงสามารถมองเห็นได้แล้ว


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

1
นี่เป็นการยกเลิกสิ่งที่คุณทำ ไม่ได้ทำให้ Visual Studio ทราบถึงสิ่งที่คุณทำ
Kyle Delaney

และถ้าคุณสร้างหรือเพิ่มไอเท็มใหม่ในเซสชั่นนั้น: Gone baby ไปแล้ว!
Christian

4

นอกจากนี้ยังมีวิธีอื่นในการรับ TFS เพื่อค้นหาไฟล์ที่มีการเปลี่ยนแปลงภายนอก Visual Studio:

  1. เปิดโซลูชันแบบออฟไลน์
  2. ใน Solution Explorer ให้เลือกไฟล์โซลูชันจากนั้นกดปุ่ม Go Online ( ไอคอนปุ่ม GoOnline)

TFS จะสแกนโซลูชันโดยอัตโนมัติสำหรับการเปลี่ยนแปลงหลังจากนี้

ขั้นตอนที่หนึ่งสามารถทำได้หลายวิธี นี่คือบางส่วน:

  • ใช้GoOffline Extension - ง่ายและมีประสิทธิภาพ
  • หากระบบขอข้อมูลรับรอง TFS เมื่อเปิดโซลูชัน (ไม่มีการตรวจสอบสิทธิ์โดเมนอัตโนมัติ) อย่าป้อนข้อมูลรับรอง โซลูชันจะเปิดแบบออฟไลน์และคุณจะเข้าสู่ระบบหลังจากกดปุ่ม Go Online
  • (วิธีแก้ปัญหาขั้นสูงสุด) ถอดสายเครือข่ายของคุณ เปิดโซลูชัน เชื่อมต่อสายเคเบิลเครือข่าย

3

Visual Sourcesafe ก็ทำงานเช่นนี้เช่นกันและวิธีที่ฉันได้รับ VSS หรือ TFS เพื่อสังเกตเห็นการเปลี่ยนแปลงคือการตรวจสอบไฟล์หนึ่งครั้งภายใน Visual Studio


1

Open Source Control และไปที่โฟลเดอร์ TFS ของคุณ คลิกขวาที่โฟลเดอร์แล้วเลือก 'เปรียบเทียบ'

สังเกตว่าไฟล์ที่แก้ไขของคุณจะแสดงเป็นสีแดง

ฉันพบว่าสิ่งนี้ดีกว่าtfpt onlineที่ทำให้คุณได้รับไฟล์ที่ไม่ได้อ่านอย่างเดียวและไม่ได้แก้ไข


1

ฉันเคยมีปัญหานี้ในอดีตเมื่ออินเทอร์เน็ตของฉันหยุดทำงานและฉันทำงานแบบออฟไลน์และการเปลี่ยนแปลงส่วนใหญ่ของฉันไม่ปรากฏใน Team Explorer

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

*.cs;!obj\;!bin\;!packages\;

ในตัวอย่างนี้จะรวมไว้ในการค้นหาเฉพาะไฟล์ C # และไม่รวมไว้ในโฟลเดอร์: bin, obj และแพ็คเกจ

สังเกตว่าคอลัมน์รอดำเนินการเปลี่ยนแปลงมีข้อมูลว่าไฟล์ถูกทำเครื่องหมายว่าแก้ไขเพิ่ม ฯลฯ ... หรือไม่มีอะไร ...

  • เพื่อทำเครื่องหมายเป็น แก้ไข (เมื่อรายการในเครื่องมีรายการเซิร์ฟเวอร์ที่ตรงกัน) ให้เลือกไฟล์และเลือกตรวจสอบแก้ไข ...
  • เพื่อทำเครื่องหมายว่าเพิ่ม (เมื่อรายการในเครื่องไม่มีรายการเซิร์ฟเวอร์) ให้เลือกไฟล์แล้วเลือกเพิ่มไฟล์

สุดท้ายฉันไม่แน่ใจว่าทำไมโครงการไม่อยู่ในรายการที่นี่ (หลังจากฉันลบตัวกรอง * .cs แล้วก็ยังไม่ปรากฏขึ้น) ดังนั้นให้สร้างโซลูชันใหม่เพื่อให้แน่ใจว่าโครงการจะอัปเดตด้วย

+ ในการแก้ปัญหาให้คลิกปุ่มเชื่อมต่อ (ถ้ามีการแสดงขึ้นไป) ที่กล่าวว่าไปออนไลน์


0

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


0

ในกรณีของฉันสิ่งต่อไปนี้ใช้งานได้ (อย่างน้อยก็ครั้งเดียวที่ฉันลอง):

  1. ไปที่แผงการเปลี่ยนแปลงที่รอดำเนินการ
  2. เลือกดูตัวเลือกภายใต้การเปลี่ยนแปลงที่รวมหรือไม่รวม
  3. สลับระหว่างแสดงทั้งหมดและแสดงการเปลี่ยนแปลงโซลูชัน
  4. เปลี่ยนกลับหากต้องการ

รีเฟรชการเปลี่ยนแปลง TFS

การเปลี่ยน View Option ดูเหมือนจะบังคับให้รีเฟรชไฟล์ที่แก้ไข

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