ทำไม TFS ถึงไม่ได้รับล่าสุด?


177

ทำไมทำไมทำไม TFS ถึงไม่ทำงานล่าสุดอย่างต่อเนื่อง?

คุณคงคิดว่าคุณสมบัตินั้นจะได้รับการทดสอบอย่างละเอียด

สิ่งที่ฉันต้องทำคือรับรุ่นที่เฉพาะเจาะจงจากนั้นตรวจสอบทั้งไฟล์ที่เขียนทับได้ + เขียนทับไฟล์ทั้งหมด

การตั้งค่าในเครื่องของฉันเกิดความสับสนหรือไม่


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

นี่ควรเป็นความคิดเห็น
Jimenemex

คำตอบ:


118

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

ดูลิงค์นี้: http://blogs.microsoft.co.il/blogs/srlteam/archive/2009/04/13/how-get-latest-version-really-works.aspx

วิธีเดียวในการทำให้สิ่งที่คุณต้องการคือรับรุ่นที่เฉพาะเจาะจงจากนั้นทำเครื่องหมายที่ช่อง "เขียนทับ ... " ทั้งสอง


7
สิ่งนี้ไม่ถูกต้อง TFS "รับล่าสุด" ทำงานตรงตามที่โฆษณาไว้ตราบใดที่ TFS รู้เกี่ยวกับการเปลี่ยนแปลงไฟล์ รับ "screws up" ล่าสุดเท่านั้นเมื่อคนออกไปข้างนอกและแก้ไขไฟล์ที่เก็บไว้นอก IDE โดยไม่ต้องตรวจสอบพวกเขาก่อน จากนั้น TFS คิดว่าคุณมีแหล่งข้อมูลล่าสุดบนดิสก์และไม่ได้รับ
Robaticus

18
@Robaticus tfs 'รับล่าสุด' โฆษณาจริง ๆ ได้อย่างไร เช่นเดียวกับคริสที่มีชีวิตชีวากล่าวก่อนหน้านี้เขาและทุกคนบนโลกเข้าใจว่า 'ได้รับล่าสุด' รับรุ่นล่าสุดซึ่งไม่ใช่สิ่งที่ tfs จะทำ คุณไม่ต้องแก้ไขซอร์สนอก tfs เพื่อทำให้ยุ่งเหยิง ฉันมี 2 เวิร์กสเตชันและทำงานสลับกันได้และฉันก็ไม่สามารถซิงค์แหล่งที่มา รับรุ่นล่าสุดแล้วยุ่งยากกับ tfs และฉันไม่สามารถจินตนาการสิ่งที่ผสานต้องการ
Syaiful Nizam Yahya

2
@publicENEMY ฉันเคยทำงานกับ tfs บนเครื่องสองเครื่องจริงๆแล้วมันเป็นปัญหาในการซิงค์แหล่งที่มา คุณอาจต้องการผู้ใช้สองคนสำหรับสิ่งนี้ ...
kroiz

11
ฮึ นี่คือความเจ็บปวด Visual Studio สามารถทำให้เกิดความสับสนได้และบางครั้งการแก้ไขในระบบไฟล์เป็นวิธีที่ง่ายที่สุด ระบบควบคุมแหล่งข้อมูลอื่น ๆ เช่นการโค่นล้มมี hooks windows explorer และทั้งสองอย่างและการรวม VS ทำหน้าที่ในการตรวจสอบการเปลี่ยนแปลงได้ดีขึ้น ฉันคิดถึง SVN!
Dan Csharpster

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

42

บางครั้งการGet specific version ทำเครื่องหมายที่ช่องทำเครื่องหมายทั้งสองจะไม่ทำให้คุณได้รับไฟล์ล่าสุด คุณอาจทำการเปลี่ยนแปลงกับไฟล์และต้องการยกเลิกการเปลี่ยนแปลงเหล่านั้นโดยรับเวอร์ชันล่าสุดอีกครั้ง อืม ... นั่นคือสิ่งที่Undo pending changesมีไว้สำหรับและไม่ใช่จุดประสงค์ของGet specific versionมัน

หากมีข้อสงสัย:

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

และนี่คือสิ่งที่ฉันโปรดปรานที่ฉันเพิ่งค้นพบ:

  • จับตาดูOutputหน้าต่างเพื่อดูข้อความเช่นนี้:

    คำเตือน - ไม่สามารถรีเฟรช R: \ TFS-PROJECTS \ www.example.com \ ExampleMVC \ ตัวอย่าง MVC \ ตัวอย่าง MVC.csproj เนื่องจากคุณมีการแก้ไขที่รอดำเนินการ

นี้ที่สำคัญปรากฏข้อความในหน้าต่างการส่งออก ไม่มีการแจ้งเตือนอื่น ๆ ! ไม่มีอะไรในการเปลี่ยนแปลงที่รอดำเนินการและไม่มีข้อความโต้ตอบอื่นที่บอกคุณว่าไฟล์ที่คุณเพิ่งร้องขอไม่ถูกเรียกคืนอย่างชัดเจน! และใช่ - คุณแก้ปัญหานี้โดยเพียงแค่เรียกใช้Undo pending changesและรับไฟล์


ขอบคุณคำตอบของคุณ ( Undo pending changes) ใช้ได้กับฉัน
RAM

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

@Simon_Weaver ขอบคุณการแก้ไขปัญหาของฉันมันทำให้รู้สึกว่าทำไมมันเกิดขึ้นยังคงน่ารำคาญสุด ๆ
nulltron

12

TFS เช่นเดียวกับผู้ให้บริการควบคุมแหล่งข้อมูลอื่น ๆ เช่น Perforce ทำสิ่งนี้เนื่องจากระบบทราบว่าเวอร์ชันล่าสุดที่คุณประสบความสำเร็จคืออะไรดังนั้นรับผลการแปลงล่าสุดเป็น "รับการเปลี่ยนแปลงตั้งแต่ x" หากคุณเล่นตามกฎและตรวจสอบสิ่งต่าง ๆ ก่อนที่จะแก้ไขคุณจะไม่สับสนเรื่องและ "รับล่าสุด" ทำตามที่ระบุไว้

ดังที่คุณเห็นคุณสามารถบังคับให้ประเมินทุกสิ่งใหม่ซึ่งมีการใช้แบนด์วิดท์ที่สูงกว่ามาก แต่ทำงานใกล้เคียงกับที่ SourceSafe ใช้


11

เป็นการยากที่จะตอบกลับคำสั่งโดยไม่มีตัวอย่างว่ามันใช้งานไม่ได้ แต่เป็นสิ่งสำคัญที่จะต้องเข้าใจว่า TFVC (ในโหมด "พื้นที่ทำงานเซิร์ฟเวอร์" ซึ่งเป็นกลไกก่อน TFS 2012) ไม่ได้ตรวจสอบสถานะของระบบไฟล์ในระบบของคุณคุณ TFVC Server Workspaces เป็นระบบประเภท "checkout-edit-checkin" ซึ่งเป็นการออกแบบโดยการตัดสินใจโดยเจตนาเพื่อลดจำนวนไฟล์ I / O ที่จำเป็นในการกำหนดสถานะของเวิร์กสเปซของคุณอย่างหนาแน่น ข้อมูลเวิร์กสเปซจะถูกบันทึกไว้บนเซิร์ฟเวอร์แทน

สิ่งนี้ทำให้พื้นที่ทำงานของเซิร์ฟเวอร์ TFVC มีขนาดใหญ่มาก codebases ขนาดใหญ่ได้อย่างมีประสิทธิภาพมาก หากคุณอยู่ในฐานรหัสแบบหลายกิกะไบต์ (เช่น Visual Studio หรือทรีซอร์สของ Windows) ไคลเอ็นต์ของคุณไม่จำเป็นต้องสแกนระบบไฟล์ในเครื่องของคุณค้นหาไฟล์ที่อาจมีการเปลี่ยนแปลงเนื่องจากสัญญาที่คุณมีกับ TFS คือคุณ จะตรวจสอบไฟล์อย่างชัดเจนเมื่อคุณต้องการแก้ไข

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

ถ้าคุณทำล้มล้างกลไกนี้แล้วคุณสามารถใช้tfpt reconcileคำสั่งในการตรวจสอบพื้นที่ทำงานในท้องถิ่นของคุณสำหรับการเปลี่ยนแปลงที่คุณได้ทำในประเทศ

หากคุณพบว่าตัวเองกำลังใช้ "รับรุ่นที่เฉพาะเจาะจง" และเลือกตัวเลือก "บังคับ" และ "เขียนทับ" ก็เป็นไปได้มากว่าคุณกำลังติดนิสัยการเลี่ยงการบังคับใช้ทั้งหมดที่ TFS ดำเนินการเพื่อไม่ให้ทำร้ายตัวเองและคุณควรพิจารณา TFVC Local Workspace

TFVC Local Workspaces จัดให้มีระบบการควบคุมเวอร์ชัน "edit-merge-commit" ซึ่งหมายความว่าคุณไม่จำเป็นต้องตรวจสอบไฟล์อย่างชัดเจนก่อนทำการแก้ไขและไม่ได้อยู่บนดิสก์แบบอ่านอย่างเดียว แต่คุณเพียงแค่ต้องแก้ไขไฟล์และลูกค้าของคุณจะสแกนระบบไฟล์สังเกตการเปลี่ยนแปลงและแสดงสิ่งนี้เป็นการเปลี่ยนแปลงที่รอดำเนินการ

TFVC Local Workspaces เหมาะสำหรับโครงการขนาดเล็กที่ไม่ต้องการการควบคุมสิทธิ์อย่างละเอียดเนื่องจากมันมีเวิร์กโฟลว์ที่ดีกว่า คุณไม่จำเป็นต้องออนไลน์และคุณไม่จำเป็นต้องตรวจสอบไฟล์ก่อนที่จะทำการแก้ไข

TFVC Local Workspaces เป็นค่าเริ่มต้นใน TFS 2012 และหากไม่ได้เปิดใช้งานสำหรับคุณคุณควรสอบถามผู้ดูแลเซิร์ฟเวอร์ของคุณ (องค์กรที่มีรหัสฐานขนาดใหญ่มากหรือข้อกำหนดการตรวจสอบที่เข้มงวดอาจปิดการใช้งาน TFVC Local Workspace)

การควบคุมเวอร์ชันหนังสือที่ยอดเยี่ยมของ Eric Sink โดยตัวอย่างแสดงความแตกต่างระหว่างระบบการเช็คเอาต์เช็คอินและการแก้ไขผสานและเมื่อระบบหนึ่งเหมาะสมกว่าอีกระบบหนึ่ง

หนังสือProfessional Team Foundation Server 2013ยังให้ข้อมูลที่ยอดเยี่ยมเกี่ยวกับความแตกต่างระหว่างพื้นที่ทำงานเซิร์ฟเวอร์ TFVC และพื้นที่ทำงานในท้องถิ่น TFVC เอกสารและบล็อก MSDN ยังให้ข้อมูลโดยละเอียด:


เยี่ยมมากคำตอบที่ให้ข้อมูล แต่ฉันไม่แน่ใจว่า "การทำเครื่องหมายไฟล์เป็นแบบเขียนอย่างเดียว" ตอบ OP ฉันรู้ว่าฉันกำลังใช้ Visual Studio (ตอนนี้ 2013) เพื่อทำการเปลี่ยนแปลงทั้งหมดของฉันเป็นไฟล์ *. cs ในโครงการ MVC .NET และเมื่อฉันเปิดแล็ปท็อป "Get ล่าสุด" มักทำให้ฉันติดอยู่กับที่ กำลังฝึกฝนการขนส่งสินค้า "ขั้นสูง >>> รับเฉพาะ >>> ล่าสุด >>> เขียนทับ" ตอนนี้ ไม่มีการแก้ไขหรือเช็คอินนอก VS VS ค้นหาไฟล์ที่ฉันแก้ไขและทำให้การเปลี่ยนแปลงที่รอดำเนินการถูกต้อง ฉันตรวจสอบพวกเขาด้วย VS ฉันไม่เห็นอะไรเลยที่จะ "ทำร้ายตัวเอง" แต่การได้รับสิ่งล่าสุดนั้นไม่ได้ผลอย่างน่าเชื่อถือ ??
ruffin

@ รัฟฟินคุณกำลังบอกว่าจะได้รับแฮงค์ล่าสุดหรือไม่ นั่นไม่ใช่สิ่งที่ฉันตีความคำถามของ OP ให้เป็น มันเคยจบไหม? การดำเนินการอื่น ๆ ช้าหรือเพียงแค่รับหรือไม่ รับ w / เขียนทับช้าหรือเคยแค่รับล่าสุด?
Edward Thomson

ไม่ไม่แขวน ฉันสามารถรับล่าสุดและดูเหมือนว่าจะทำงาน (และทำงานอย่างรวดเร็วพอสมควร) แต่ไฟล์ไม่เปลี่ยนแปลง หากฉันได้รับเฉพาะ >>> ล่าสุด >>> เขียนทับเช่นเดียวกับคำแนะนำ @NotMeไฟล์ "ทัน" ปลาเฮอริ่งแดงที่เป็นไปได้: บางครั้งก็เกิดขึ้นกับ Shelfsets ใช่เส้นทางการทำงานของฉันถูกต้องหรือรับเฉพาะจะไม่ทำงานฉันไม่เชื่อ
ruffin

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

6

Team Foundation Server (TFS) ติดตามการคัดลอกในเครื่องในไดเรกทอรีซ่อนเร้นที่เรียกว่า $ TF เมื่อคุณออก "รับรุ่นล่าสุด" TFS จะมองเข้าไปในโฟลเดอร์นี้และดูสภาพอากาศว่ามีสำเนาล่าสุดหรือไม่ หากเป็นเช่นนั้นจะไม่ดาวน์โหลดสำเนาล่าสุด ไม่สำคัญว่าคุณมีไฟล์ต้นฉบับหรือไม่ ในความเป็นจริงคุณอาจลบทั้งโฟลเดอร์ (ในกรณีของฉัน) และ TFS จะไม่ดึงสำเนาล่าสุดเพราะมันไม่ได้มองเข้าไปในไฟล์จริง แต่เป็นไดเรกทอรีที่ซ่อนอยู่ซึ่งมันบันทึกการเปลี่ยนแปลง ข้อบกพร่องในการออกแบบนี้คือสิ่งที่ทำนอกระบบจะไม่ถูกบันทึกใน TFS ตัวอย่างเช่นคุณอาจเข้าสู่ Windows explorer ลบโฟลเดอร์หรือไฟล์และ TFS จะไม่รู้จัก มันจะตาบอดอย่างสิ้นเชิง อย่างน้อยฉันก็คาดหวังว่า Windows จะไม่ยอมให้คุณลบไฟล์นี้

วิธีหนึ่งในการบังคับใช้สำเนาล่าสุดคือการลบโฟลเดอร์ $ TF ที่ซ่อนด้วยตนเอง ในการทำเช่นนั้นให้ไปที่พรอมต์คำสั่งและนำทางไปยังโฟลเดอร์รูทที่คุณทำโปรเจ็กต์และเช็คเอาท์คำสั่งนี้

rd/s $tf                    // remove $TF folder and everything inside it

หากคุณต้องการตรวจสอบโฟลเดอร์ที่ซ่อนอยู่คุณสามารถทำได้โดยใช้

dir /ah                    // display hidden files and folders

หมายเหตุ: ถ้าคุณทำมัน tf จะคิดว่าคุณไม่มีสำเนาโลคัลแม้ว่าคุณจะมีมันอยู่ในไฟล์และมันจะซิงค์ทุกอย่างอีกครั้ง

ข้อควรระวัง: ใช้วิธีนี้ในความเสี่ยงของคุณเอง โปรดอย่าใช้มันกับงานสำคัญ


สิ่งนี้ใช้ได้กับฉันเมื่อไม่มีสิ่งใดทำ ฉันลองใช้รุ่นที่เฉพาะเจาะจงและตรวจสอบช่องทำเครื่องหมายทั้งสองเพื่อบังคับให้ดาวน์โหลด แต่นั่นไม่ได้ไฟล์ ฉันคิดว่าบางสิ่งเสียหาย แต่วิธีนี้ใช้ได้ผล
Francisco d'Anconia

3

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


3

น่าเสียดายที่มีข้อบกพร่องอย่างน้อยหนึ่งข้อใน TFS 2008 เนื่องจากปัญหานี้ทำให้เกิดปัญหาบนเครื่องของนักพัฒนาซอฟต์แวร์และสร้างเซิร์ฟเวอร์ที่ฉันทำงานด้วยเช่นกัน

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

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

เราเปลี่ยนเซิร์ฟเวอร์การสร้างของเราเพื่อใช้ฟังก์ชั่น Get Specific รุ่นแทนเสมอดังนั้นตอนนี้ส่วนนี้ใช้งานได้ แต่เนื่องจาก build server (TeamCity) ของเรายังอาศัยการตรวจสอบว่ามีการเปลี่ยนแปลงไฟล์เพื่อที่จะเริ่มสร้างหรือไม่ บางครั้งมันกลายเป็นโหมด "ไม่มีอะไรเปลี่ยนแปลงไม่มีอะไรให้ดูที่นี่ย้ายไปที่โหมด" และไม่ทำอะไรเลยจนกว่าเราจะบังคับให้ใช้การกำหนดค่าการสร้าง

โปรดทราบว่าฉันเคยประสบปัญหานี้กับเครื่องที่ไม่เคยสัมผัสยกเว้นได้รับ + ​​รุ่นล่าสุดทั้งสองแบบด้วยตนเองดังนั้นจึงไม่มีการดัดแปลงไฟล์ มันเป็นเพียงแค่ TFS เริ่มสับสน

มีอยู่ครั้งหนึ่งที่ถูกครอบตัดฉันตรวจสอบแล้วว่าไฟล์บนดิสก์นั้นเป็นเลขฐานสองที่เหมือนกันกับรุ่นที่ดึงมาก่อนหน้านี้ดังนั้นจึงไม่มีการดัดแปลงแก้ไขด้วยตนเองสำหรับไฟล์

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


TFS ขึ้นอยู่กับหมายเลขเวอร์ชันของไฟล์ที่จะรู้ว่าคุณมีเวอร์ชั่น "ล่าสุด" หรือไม่ หมายเลขนั้นเก็บรักษาไว้ใน TFS ทั้งหมดและจะได้รับการอัปเดตเมื่อมีคนเช็คอินเท่านั้นดังนั้นเมื่อคุณ "รับล่าสุด" TFS จะตรวจสอบฐานข้อมูลเพื่อดูว่าเวอร์ชันล่าสุดที่ส่งถึงคุณคืออะไร หากตัวเลขนี้เท่ากับเวอร์ชั่นปัจจุบันแสดงว่าคุณมีหมายเลขล่าสุด โดยไม่คำนึงถึงสิ่งที่เป็นจริงในระบบไฟล์ในเครื่องของคุณ แนวคิดก็เพื่อ จำกัด ปริมาณการใช้เครือข่าย น่าเสียดายที่วิธีเดียวที่รุ่นนี้ใช้คือหากการแก้ไขทั้งหมดเกิดขึ้นภายในแอปพลิเคชันที่มีความรู้เกี่ยวกับ TFS
NotMe

นอกจากนี้ฉันเห็นด้วยอย่างน้อยหนึ่งข้อผิดพลาดกับรุ่น 2005/51 ฉันเห็นปัญหาที่แน่นอนที่คุณอธิบายไว้ในหลาย ๆ เครื่อง ซึ่งเป็นสิ่งที่ทำให้ฉันใช้รุ่นเฉพาะเจาะจงอย่างเคร่งศาสนา
NotMe

ในบางกรณีการแก้ไขเกิดขึ้นทั้งหมดใน Visual Studio บนเครื่องหนึ่งเครื่องอื่น ๆ ที่มีจุดประสงค์เพื่อรับ + ​​build ล่าสุดไม่มีการเปลี่ยนแปลงในตัวเครื่องเลย แต่มันก็จัดการเรื่องนี้ได้ ฉันไม่ประทับใจกับการควบคุมแหล่ง TFS ที่จะพูดน้อย หวังว่า 2010 จะมีปัญหาเหล่านี้น้อยลง
Lasse V. Karlsen

3

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

ลองเปลี่ยนชื่อเครื่องของคุณและสร้างพื้นที่ทำงานใหม่เป็นเครื่องใหม่


2

ฉันมีปัญหาเดียวกันกับ Visual Studio 2012 ไม่ว่าฉันจะทำอะไรก็ไม่ได้รับรหัสจากแหล่งควบคุม TFS

ในกรณีของฉันสาเหตุคือการแมปโฟลเดอร์ + โฟลเดอร์ย่อยจากตัวควบคุมแหล่งข้อมูลแยกจากกัน แต่กับโครงสร้างเดียวกันใน HD ท้องถิ่นของฉัน

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


1

ปัญหาส่วนใหญ่ที่ฉันได้เห็นกับนักพัฒนาบ่นว่า Get ล่าสุดไม่ได้ทำในสิ่งที่พวกเขาคาดหวังจากข้อเท็จจริงที่ว่าพวกเขากำลังทำงานรับล่าสุดจาก Solution Explorer มากกว่าจาก Explorer ควบคุมแหล่งที่มา Solution Explorer จะรับเฉพาะไฟล์ที่เป็นส่วนหนึ่งของโซลูชันและจะไม่สนใจสิ่งใด ๆ ที่ไฟล์ภายในโซลูชันต้องการและเป็นส่วนหนึ่งของการควบคุมแหล่งที่มาในขณะที่ Source Control explorer จะเปรียบเทียบพื้นที่ทำงานในพื้นที่ของคุณกับที่เก็บบนเซิร์ฟเวอร์ ต้องการ.


ฉันลองจาก Team Explorer แล้วก็ยังคงผลลัพธ์เหมือนเดิม ในกรณีของฉันฉันลบโฟลเดอร์และต้องการรับสำเนาล่าสุดอีกครั้ง แต่ไม่มีโชค
Hammad Khan

1
ฉันไม่เห็นด้วยกับคำตอบนี้ หากคุณมีโครงการที่ใช้ร่วมกันโดยใช้โซลูชันที่แตกต่างกันคุณต้องทำใน Solution Explorer มิฉะนั้นจะใช้เส้นทาง TFS นั้น
Heliac

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

1

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


1

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


1

สิ่งนี้ใช้ได้กับฉัน:
1. ออกจาก Visual Studio
2. เปิดหน้าต่างคำสั่งและนำทางไปยังโฟลเดอร์: "% localappdata% \ Local \ Microsoft \ Team Foundation \"
3. นำทางไปยังโฟลเดอร์ย่อยสำหรับทุกรุ่นและลบโฟลเดอร์ย่อย "cache" และเนื้อหา
4. เริ่ม Visual Studio ใหม่และเชื่อมต่อกับ TFS
5. ทดสอบการรับรุ่นล่าสุด


0

เพียงแค่ต้องการเพิ่ม TFS MSBuild ไม่รองรับอักขระพิเศษในโฟลเดอร์เช่น "@"

ฉันมีประสบการณ์ในอดีตที่หนึ่งในโฟลเดอร์โครงการของเราชื่อเป็น External @ Project1

เราสร้างคำนิยาม TFS Build เพื่อเรียกใช้ไฟล์ msbuild ที่กำหนดเองจากนั้นโฟลเดอร์พื้นที่ทำงานไม่ได้รับเนื้อหาใด ๆ ที่โฟลเดอร์ External @ Project1 ในระหว่างที่เวิร์กสเปซได้รับล่าสุด ดูเหมือนว่า tfs get จะล้มเหลว แต่ไม่แสดงข้อผิดพลาดใด ๆ

หลังจากการลองผิดลองถูกและเปลี่ยนชื่อโฟลเดอร์เป็น _Project1 voila เราได้ไฟล์ในโฟลเดอร์ (_Project1)


TFS หรือไม่คุณไม่ควรใช้อักขระพิเศษในชื่อโฟลเดอร์โครงการ!
Heliac

@ ไม่ใช่พิเศษ และไม่เป็น% ฯลฯ ฯลฯ มันเป็นเพียงความเกียจคร้านในส่วนของ Microsoft ที่ทำให้ตัวอักษรดังกล่าวได้รับการปฏิบัติแตกต่างจากอักขระ 'ปกติ'
Kevin Whitefoot

0

เครื่องมือ: เครื่องมือไฟฟ้า TFS

ที่มา: http://dennymichael.net/2013/03/19/tfs-scorch/

คำสั่ง: tfpt scorch / recursive / ลบ C: \ LocationOfWorkspaceOrFolder

จะเป็นการเปิดกล่องโต้ตอบที่จะขอให้คุณลบหรือดาวน์โหลดรายการไฟล์ เลือกหรือยกเลิกการเลือกไฟล์ตามนั้นและกดตกลง ลักษณะที่ปรากฏในกริด (กล่องกาเครื่องหมาย, ชื่อไฟล์, FileAction, FilePath)

สาเหตุ: TFS จะเปรียบเทียบกับรายการในพื้นที่ทำงานเท่านั้น หากมีการเปลี่ยนแปลงนอกพื้นที่ทำงาน TFS จะไม่รับรู้ถึงสิ่งเหล่านี้

หวังว่าใครบางคนพบว่ามีประโยชน์นี้ ฉันพบโพสต์นี้หลังจากลบโฟลเดอร์จำนวนหนึ่งในตำแหน่งที่ตั้งที่แตกต่างกัน การจำไม่ได้ว่าโฟลเดอร์ใดที่ฉันลบไปนั้นยกเว้นตัวเลือก Force Get / Replace ปกติที่ฉันจะใช้


0

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

ตรวจสอบพื้นที่ทำงาน แก้ไขพื้นที่ทำงานปัจจุบัน ตรวจสอบเส้นทางทั้งหมด เส้นทางโซลูชันไม่ถูกต้องและชี้ไปที่โฟลเดอร์ที่ถูกลบ

แก้ไขพา ธ และรับการทำงานล่าสุด


0

ไปด้วยการคลิกขวา: ขั้นสูง> รับเฉพาะรุ่น เลือก "รุ่น Letest" และตอนนี้สำคัญทำเครื่องหมายสองเช็ค: ป้อนคำอธิบายรูปภาพที่นี่

การตรวจสอบคือ:
เขียนทับไฟล์ที่เขียนได้ซึ่งไม่ได้ตรวจสอบ

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


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