วิธีการละเว้นไฟล์ / ไดเรกทอรีใน TFS เพื่อหลีกเลี่ยงการไปที่ที่เก็บส่วนกลาง?


254

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

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

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

ฉันต้องการป้องกันไม่ให้สิ่งนี้เกิดขึ้น


1
สำหรับพื้นที่ทำงานในท้องถิ่นคุณสามารถใช้. tfignore -ไฟล์เช่น Richard Banks ชี้ให้เห็น สำหรับการปรับไฟล์นี้ด้วยContext-Menueใน team-Explorerer ดูคำตอบของฉัน สำหรับพื้นที่ทำงานเซิร์ฟเวอร์ฉันให้ลิงค์ในความคิดเห็น
gReX

คำตอบ:


88

สำหรับ VS2015 และ VS2017

ทำงานร่วมกับ TFS (on-prem) หรือ VSO (Visual Studio Online - ข้อเสนอ Azure-โฮสต์)

เอกสาร NuGet ให้คำแนะนำเกี่ยวกับวิธีการทำสิ่งนี้ให้สำเร็จและฉันเพิ่งติดตามพวกเขาสำเร็จสำหรับ Visual Studio 2015 และ Visual Studio 2017 เทียบกับ VSTS (TFS ที่โฮสต์โดย Azure) ทุกอย่างได้รับการอัปเดตอย่างเต็มที่ตั้งแต่เดือนพฤศจิกายน 2559ส.ค. 2561

ฉันแนะนำให้คุณทำตามคำแนะนำของ NuGet แต่เพียงเพื่อสรุปสิ่งที่ฉันทำ:

  1. ตรวจสอบให้แน่ใจว่าpackagesโฟลเดอร์ของคุณไม่ได้มุ่งมั่นที่จะ TFS ถ้าเป็นเช่นนั้นให้รีบออกไปจากที่นั่น
  2. ทุกอย่างที่เราสร้างด้านล่างจะเข้าไปในโฟลเดอร์เดียวกับที่.slnไฟล์ของคุณมีอยู่เว้นแต่จะระบุไว้เป็นอย่างอื่น (คำแนะนำของ NuGet ยังไม่ชัดเจนในเรื่องนี้)
  3. สร้าง.nugetโฟลเดอร์ คุณสามารถใช้ Windows Explorer เพื่อตั้งชื่อ.nuget.ให้บันทึกได้สำเร็จ.nuget(จะลบช่วงเวลาสุดท้ายโดยอัตโนมัติ) แต่การพยายามตั้งชื่อโดยตรง.nugetอาจไม่ทำงาน (คุณอาจได้รับข้อผิดพลาดหรืออาจเปลี่ยนชื่อขึ้นอยู่กับรุ่นของ Windows ) หรือตั้งชื่อไดเรกทอรี nuget แล้วเปิดไดเรกทอรีหลักในบรรทัดรับคำสั่ง ชนิด ren nuget .nuget
  4. ภายในโฟลเดอร์นั้นให้สร้างNuGet.configไฟล์และเพิ่มเนื้อหาต่อไปนี้แล้วบันทึก:

NuGet.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <solution>
        <add key="disableSourceControlIntegration" value="true" />
    </solution>
</configuration>
  1. ย้อนกลับไปใน.slnโฟลเดอร์ของคุณแล้วสร้างไฟล์ข้อความใหม่และตั้งชื่อไฟล์.tfignore(หากใช้ Windows Explorer ให้ใช้เคล็ดลับเดียวกับด้านบนและตั้งชื่อ.tfignore.)
  2. ใส่เนื้อหาต่อไปนี้ลงในไฟล์:

.tfignore:

# Ignore the NuGet packages folder in the root of the repository.
# If needed, prefix 'packages' with additional folder names if it's 
# not in the same folder as .tfignore.
packages

# include package target files which may be required for msbuild,
# again prefixing the folder name as needed.
!packages/*.targets
  1. บันทึกทั้งหมดนี้ส่งไปที่ TFS จากนั้นปิด & เปิด Visual Studio อีกครั้งและ Team Explorer ไม่ควรระบุโฟลเดอร์แพ็คเกจเป็นอีกต่อไปขณะเช็คอิน
  2. คัดลอก / วางผ่าน Windows Explorer .tfignoreไฟล์และ.nugetโฟลเดอร์ไปยังโซลูชันต่างๆทั้งหมดของฉันและยืนยันพวกเขาและฉันไม่มีpackagesโฟลเดอร์ที่พยายามแอบเข้าไปในแหล่งควบคุม repo ของฉันอีกต่อไป!

การปรับแต่งเพิ่มเติม

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


1
ติดตามสิ่งนี้ใน VS 2017 - TFS 2015 ทำงานเหมือนมีเสน่ห์ แพ็กเกจ Nuget ของฉันทั้งหมดไม่ปรากฏว่ามีการเปลี่ยนแปลงที่รอดำเนินการอีกต่อไป
James Walsh Jr

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

สิ่งนี้ไม่ได้ผลสำหรับฉัน VS 2017 - TFS 2015 ฉันไม่สามารถตรวจสอบอะไรได้เมื่อฉันลองฉันจะได้รับข้อผิดพลาดต่อไปนี้: "D: \ Src \ MiniCoreWebAPI \ packages \ Microsoft.IdentityModel.Protocols.5.2.1 \ lib \ net451 \ Microsoft.IdentityModel.Protocols .dll: ไม่พบส่วนหนึ่งของเส้นทาง "
Rod

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

172

หากคุณใช้พื้นที่ทำงานในเครื่อง (TFS 2012+) ตอนนี้คุณสามารถใช้.tfignoreไฟล์เพื่อแยกโฟลเดอร์และไฟล์ในเครื่องออกจากการเช็คอิน

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

รายละเอียดทั้งหมดเกี่ยวกับ MSDN - http://msdn.microsoft.com/en-us/library/ms245454.aspx#tfignore

สำหรับคนขี้เกียจ:

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

กฎต่อไปนี้ใช้กับไฟล์. tfignore:

  • # เริ่มบรรทัดความคิดเห็น
  • The * และ? สนับสนุน wildcard
  • filespec จะเรียกซ้ำโดยไม่ใช้คำนำหน้าโดย \ character
  • ! negates filespec (ไฟล์ที่ตรงกับรูปแบบจะไม่ถูกละเว้น)

ไฟล์ตัวอย่าง:

# Ignore .cpp files in the ProjA sub-folder and all its subfolders
ProjA\*.cpp
# 
# Ignore .txt files in this folder 
\*.txt
#
# Ignore .xml files in this folder and all its sub-folders
*.xml
#
# Ignore all files in the Temp sub-folder
\Temp
#
# Do not ignore .dll files in this folder nor in any of its sub-folders
!*.dll

35
ฉันได้ลองทำสิ่งนั้นแล้ว สิ่งเดียวที่ได้รับการเพิกเฉยคือเนื้อหาของไฟล์. tfignore :(
user1852503

15
@ SerjSagan คอมพิวเตอร์ของฉันไม่อนุญาตให้ฉันสร้าง.tfignoreดังนั้นฉันจึงสร้าง.tfignore.และลบจุดสุดท้ายด้วยตัวของมันเอง ..
Peter

5
ปัญหาคือมันไม่สนใจเฉพาะทรัพยากรซึ่งเป็น 1) ลบอย่างชัดเจนในหน้าต่างExplorer การควบคุมแหล่งก่อนที่จะเช็คอินและ 2) แยกอย่างชัดเจนในหน้าต่างการเปลี่ยนแปลงที่รอดำเนินการ ตัวอย่างเช่นหากคุณจะใช้เพื่อเพิกเฉยโฟลเดอร์แพ็คเกจและพึ่งพาการคืนค่าแพ็คเกจของ NuGet คุณจะต้อง 1) ลบโฟลเดอร์แพ็คเกจในSource Control Explorer จากนั้น 2) ยกเว้นในหน้าต่างการเปลี่ยนแปลงที่ค้างอยู่หลังจากกระบวนการ NuGet Package Restore . มิฉะนั้นจะยังคงเช็คอินในโฟลเดอร์แพ็คเกจ
Deilan

1
หาก Windows ไม่อนุญาตให้คุณสร้าง.tfignoreไฟล์เนื่องจากไม่มีชื่อที่เหมาะสมคุณสามารถสร้างหรือเปลี่ยนชื่อไฟล์ผ่านหน้าต่างบรรทัดคำสั่ง
Zarepheth

1
มีปัญหาบางอย่างที่สำคัญกับ. tfignore ใน VS2015 ชาวบ้านไม่มีความสุขมากแต่ดูเหมือนจะไม่มีคำแถลงที่ชัดเจนของปัญหาหรือมีความมุ่งมั่นที่จะแก้ไขอย่างชัดเจน
bbsimonbb

71

มันไม่ดูเหมือนยุ่งยากเล็ก ๆ น้อย ๆ ที่จะไม่สนใจไฟล์ (และโฟลเดอร์) ในเซิร์ฟเวอร์มูลฐานทีม ฉันได้พบวิธีการนี้สองวิธี (โดยใช้ TFS / Team Explorer / Visual Studio 2008) วิธีการเหล่านี้ใช้ได้กับเว็บไซต์ประเภทโครงการ ASP ด้วย

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

อีกวิธีคือใช้คำสั่ง Add Items to Folder ของ Source Control Explorer วิธีนี้จะเปิดตัวช่วยสร้างขนาดเล็กและในขั้นตอนใดขั้นตอนหนึ่งคุณสามารถเลือกรายการที่จะยกเว้นได้ (แม้ว่าฉันคิดว่าคุณต้องเพิ่มรายการอย่างน้อยหนึ่งรายการใน TFS ด้วยวิธีนี้เพื่อให้ตัวช่วยสร้างดำเนินการต่อ)

คุณสามารถเพิ่มนโยบายการเช็คอินรูปแบบต้องห้าม (ภายใต้ทีม -> การตั้งค่าโครงการทีม -> การควบคุมแหล่งที่มา ... -> นโยบายการเช็คอิน) เพื่อไม่อนุญาตให้บุคคลอื่นในทีมตรวจสอบเนื้อหาบางอย่างโดยไม่ตั้งใจ


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

1
ฉันกำลังเผชิญกับปัญหาที่คล้ายกันคุณสามารถให้รายละเอียดเพิ่มเติมเกี่ยวกับโฟลเดอร์เฉพาะที่ไม่ต้องเช็คอินโดยใช้นโยบายการเช็คอิน
Imran Rizvi

อ๊ะ - คุณพูดถูก มันเป็นส่วนหนึ่งของเครื่องมือไฟฟ้า TFS
Derek Morrison

Imran โชคไม่ดีที่ฉันเปลี่ยนงานและไม่ได้ใช้ TFS อีกต่อไปและไม่สามารถเข้าถึงโครงการที่ผ่านมาของฉันได้ดังนั้นฉันไม่แน่ใจเกี่ยวกับไวยากรณ์ของรูปแบบที่ต้องห้ามในการเช็คอินนโยบายไวยากรณ์ บางทีคำถามนี้อาจช่วยได้? stackoverflow.com/questions/2741412/…
Derek Morrison

TFS 2010 หลังจากที่คุณเลือกไฟล์ที่จะรวมคุณสามารถแยกออกจากรายการนั้น ไม่สามารถแตะไฟล์ที่มีอยู่ ...
JNF

47

สำหรับTFS 2013 :

เริ่มต้นใน VisualStudio- Team ExplorerในPendingChanges Dialog ยกเลิกการเปลี่ยนแปลงที่มีสถานะ [เพิ่ม] ซึ่งควรละเว้น

Visual Studio จะตรวจจับการเพิ่มอีกครั้ง คลิกที่"ตรวจพบ: x เพิ่ม (s)" - ในการเปลี่ยนแปลงที่ยกเว้น

ใน "เปิดการเปลี่ยนแปลง Cadidate" เปิด -Dialog คุณสามารถแยกไฟล์และโฟลเดอร์ด้วย Contextmenu ได้อย่างง่ายดาย ตัวเลือกคือ:

  • ละเว้นรายการนี้
  • ละเว้นโดยส่วนขยาย
  • ไม่ต้องสนใจชื่อไฟล์
  • ละเว้นโดย ffolder (ใช่ ffolder, TFS 2013 Update 4 / Visual Studio 2013 Premium Update 4)

อย่าลืมตรวจสอบใน. tfignore-File ที่เปลี่ยนแปลง

สำหรับVS 2015/2017 :

ขั้นตอนเดียวกัน: ใน "แท็บการเปลี่ยนแปลงที่ยกเว้น" ใน TeamExplorer \ Pending Changes คลิกที่ตรวจพบ: xxx เพิ่ม

แท็บการเปลี่ยนแปลงที่ยกเว้นใน TeamExplorer \ Pending การเปลี่ยนแปลง

กล่องโต้ตอบ "เลื่อนระดับผู้สมัครที่เปลี่ยนแปลง" และในรายการที่คุณสามารถคลิกขวาสำหรับบริบท แก้ไข Typo แล้ว :-)


ดูเหมือนจะไม่พบตัวเลือกนั้น ฉันใช้ VS 2015 RC
Shimmy Weitzhandler

สิ่งนี้จะใช้ได้ก็ต่อเมื่อคุณทำงานกับพื้นที่ทำงานในท้องถิ่นดังที่อธิบายในรายละเอียดที่นี่: msdn.microsoft.com/library/vstudio/ ......
stvn

@Shimmy: ขั้นตอนใน VS 2015 RC เหมือนเดิมโดยยังคงคำสะกดผิดเหมือนเดิม ดูคำตอบที่อัปเดตของฉัน แต่ในฐานะที่เป็น stvn ชี้ให้เห็น. tfignore ใช้งานได้กับพื้นที่ทำงานในท้องถิ่น สำหรับพื้นที่ทำงานเซิร์ฟเวอร์คุณต้องยกเลิกการรวมในการเช็คอินที่รอดำเนินการดูคำตอบที่นี่: stackoverflow.com/questions/21887308/…
gReX

@Shimmy: คุณเชื่อมต่อกับ TFS-Server 2015 หรือไม่ ตรวจสอบให้แน่ใจว่าคุณเริ่มต้นด้วยTeam Explorerใน VS
gReX

@ qw1564 ฉันค่อนข้างแน่ใจว่าเมื่อคำถามถูกถามก่อนมันเป็นไปไม่ได้ที่ gui-way แต่ตอนนี้นี่คือคำตอบที่ฉันจะเลือก ขอบคุณสำหรับเครดิต!
gReX

5

ฉันพบวิธีที่สมบูรณ์แบบในการข้ามไฟล์ใน TFS เหมือน SVN
ก่อนอื่นให้เลือกไฟล์ที่คุณต้องการละเว้น (เช่น Web.config)
ตอนนี้ไปที่แท็บเมนูแล้วเลือก:

การควบคุมแหล่งไฟล์> ขั้นสูง> ยกเว้น web.config จากการควบคุมแหล่งที่มา

... และบูม ไฟล์ของคุณถูกแยกออกจากแหล่งควบคุมอย่างถาวร


1
สิ่งนี้ใช้ได้กับฉันใน TFS 2010 สำหรับไฟล์ที่สร้างรหัส ขอบคุณ!
BozoJoe

1
ใช้งานได้จริง. tignin ไม่ทำงานสำหรับฉัน ขอบคุณหนึ่งตัน
EpicKip

2
ฉันไม่มีตัวเลือกนี้ใน VS 2018
Adam

4

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

อย่างไรก็ตามอย่าสิ้นหวัง โครงการแอปพลิเคชันบนเว็บจะไม่แสดงพฤติกรรมที่แปลกและคาดไม่ถึง (imho: moronic) WAP เป็นส่วนเสริมสำหรับ VS2005 และมาพร้อมกับ VS2008 โดยตรง

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


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