ฉันจะแยกไฟล์เฉพาะจากตัวควบคุมแหล่งที่มา TFS ได้อย่างไร


90

เรามีไฟล์กำหนดค่าหลายไฟล์ (app.DEV.config, app.TEST.config ฯลฯ ) และเหตุการณ์ก่อนสร้างที่คัดลอกไฟล์กำหนดค่าที่ถูกต้องไปยัง app.config เห็นได้ชัดว่าไฟล์เฉพาะการกำหนดค่าอยู่ในการควบคุมแหล่งที่มา - แต่ในขณะนี้ App.Config ก็เป็นเช่นนั้นและไม่ควรเป็นเช่นนั้น

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

ฉันใช้ VS 2005 และ 2005 Team Explorer



คำตอบ:


39

มีนโยบายการเช็คอิน (นโยบายรูปแบบต้องห้าม) ใน MS Power Tools ซึ่งให้คุณคัดกรองชื่อไฟล์เทียบกับนิพจน์ทั่วไป โปรดดู: Microsoft Team Foundation Server Power Tools

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

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


1
คุณลักษณะการยกเว้นทั้งโครงการทั้งทีมที่คุณอธิบายไม่มีอยู่ใน TFS น่าเสียดาย (เว้นแต่ว่าจะอยู่ในบิลด์ล่าสุดของปี 2010 ที่มากกว่าของฉัน) กล่องโต้ตอบ "Source Control File types" จะควบคุมว่าไฟล์ประเภทใดบ้างที่ไม่สามารถผสานได้นั่นคือถูกล็อกไว้โดยเฉพาะ
Richard Berg

ฉันมี VSTS2005 / 2008 ในที่ทำงาน แต่กำลังเขียนสิ่งนี้ที่บ้านดังนั้นคำตอบของฉันมาจากความจำที่ค่อนข้างแย่ของฉัน - ขอโทษ! เพิ่งรู้ว่าสิ่งที่คุณต้องการคือนโยบายการเช็คอิน "รูปแบบต้องห้าม" ของ TFS Power Tools สิ่งนี้ช่วยให้คุณสามารถจับคู่ชื่อไฟล์โดยใช้ regex และบล็อกการเช็คอินของชื่อไฟล์ที่ไม่ต้องการ: msdn.microsoft.com/en-us/teamsystem/bb980963.aspx#checkin
Jason Williams

โทรดีฉันลืมนโยบายนั้นไปแล้ว ฉันจะแก้ไขโพสต์ของคุณเพื่อให้สามารถมองเห็นได้
Richard Berg

ฉันจะแกะกิ่งเดียวได้อย่างไร ??? ฉันได้ซ่อนสาขาโดยไม่ได้ตั้งใจและฉันไม่สามารถคลายมันได้ VS2012
rolivares

95

ง่ายนิดเดียวใน TFS2012 สร้างไฟล์. tfignore

http://msdn.microsoft.com/en-us/library/tfs/ms245454%28v=vs.110%29.aspx#tfignore

######################################
# 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

# EDIT https://msdn.microsoft.com/en-us/library/ms245454(v=vs.110).aspx#tfignore
# A filespec is recursive unless prefixed by the \ character.

คุณจะทำโฟลเดอร์แพ็กเกจละเว้นแบบเรียกซ้ำได้อย่างไร แต่รวมแพ็กเกจ / repositories.config
Maslow

@ Maslow ถ้าคุณได้รับอย่าลังเลที่จะแก้ไขคำตอบของฉัน ดูเหมือนจะเป็นการตั้งค่าที่ค่อนข้างธรรมดาและเราควรใส่ไว้ในตัวอย่าง
artfulhacker

ไฟล์. tfignore ในรูทของคอลเลกชันโปรเจ็กต์จะนำไปใช้ตามลำดับชั้นโดยอัตโนมัติแม้ว่าจะไม่มีการแมป / ดาวน์โหลดโฟลเดอร์นั้นก็ตาม
Maslow

2
รองรับเฉพาะพื้นที่ทำงานในพื้นที่เท่านั้น msdn.microsoft.com/library/vstudio/…
Sumo

46

เลือกไฟล์ App.config ใน Solution Explorer และเลือก File -> Source Control -> Exclude App.config จาก Source Control


1
สิ่งที่ฉันต้องการเพื่อไม่เก็บไฟล์ที่ย่อขนาดของฉัน
Valamas

13
ทำให้ฉันมีข้อผิดพลาดว่าตัวเลือกนี้ไม่ได้อยู่ในเมนูบริบททั่วไป
Eric Herlitz

6
ฉันไม่มีตัวเลือกนั้น : '- (
Jan Aagaard

2
ไม่มีอยู่ใน Visual Studio 2013 Ultimate เช่นกัน :(
Ytrog

4
มีอยู่ (ภายใต้ File> Source Control> Advanced> Exclude App.config จาก Source Control) ใน Visual Studio Premium 2013 ของฉัน (เวอร์ชัน 12.0.3023.00 Update 3)
Martin Bäckström

23

มีตัวเลือกที่หาได้ยาก:

1. เลือกไฟล์หรือหลายไฟล์ใน Solution Explorer

2. ไปที่ File -> Source Control -> Advanced

เส้นทางที่จะไม่รวม

และนี่คือ

นี่คือการยกเว้น

ข้อควรจำ: หากคุณคลิกขวาที่ไฟล์ใน Solution Explorer คุณจะพบว่า "ตัวเลือกที่สำคัญที่สุด" ไม่ใช่ทั้งหมด :)


13

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

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


7

TFS อนุญาตให้คุณปิดบังที่ระดับโฟลเดอร์ / ไฟล์ เมื่อมีบางสิ่งบางอย่างถูกปิดบัง TFS จะไม่พยายามซิงค์ (เหมือนกับ svn: ละเว้น)

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


หากมีเพียงวิธีการปิดบังโฟลเดอร์สำหรับพื้นที่ทำงานทั้งหมด ... ไม่เห็นการตั้งค่าที่เทียบเท่าภายใต้ความปลอดภัย
felickz

คุณไม่สามารถปิดบังที่ระดับไฟล์ได้ โฟลเดอร์เท่านั้น
dudeNumber4

@ dudeNumber4 ฉันเชื่อว่าคุณลักษณะนี้ถูกปิดใช้งานใน TFS เวอร์ชันที่ใหม่กว่าหลังจากที่เขียนคำตอบเริ่มต้นแล้ว คุณสามารถลองแฮ็คนี้ได้: social.msdn.microsoft.com/Forums/vstudio/en-US/…
joshua.ewer

5

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

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

ที่มา: = "> ฉันจะแยกไฟล์เฉพาะจากตัวควบคุมแหล่งที่มา TFS ได้อย่างไร


2

Visual Studio 2013 (และ 2012)

คุณสมบัตินี้สามารถใช้ได้โดยการเลือกไฟล์และไปที่:

File > Source Control > Advanced > Exclude ... from Source Control

ไม่มีการยกเว้นในปี 2012
ExpatEgghead

ฉันไม่เห็นมันในปี 2013 เช่นกัน
VictorySaber

2

คำถามนี้ถูกถามเมื่อไม่นานมานี้ แต่เกี่ยวข้องกับปัญหาประเภทเดียวกับที่ฉันพบ

ปัญหา:

  • เราต้องการตรวจสอบรหัสของเรา
  • จากนั้นเราต้องการสร้างโครงการของเรา
    • ในระหว่างการสร้างเราต้องอาศัย Build Events เพื่อย้ายไฟล์ไปรอบ ๆ ดังนั้นเราจึงมีไฟล์ที่เหมาะสมเพื่อให้กระบวนการสร้างเสร็จสมบูรณ์
  • เมื่อ Build Event ของเราพยายามคัดลอกไฟล์เราได้รับข้อผิดพลาด Access Denied

เหตุผล:

  • Team Foundation Server Visual Studio Plugin เปลี่ยนแอตทริบิวต์ Read Only ในไฟล์ของเราเป็น READONLY TRUE เมื่อเราเช็คอินไฟล์ของเรา

สร้างตัวอย่างเหตุการณ์:

  • คัดลอก "$ (TargetDir) SomeFile.ext" "$ (ProjectDir)"

ด้านบนเราต้องย้ายไฟล์จาก Target Build Path (โฟลเดอร์ bin \ debug หรือ bin \ release) ไปยังโฟลเดอร์โครงการของเรา ในสถานการณ์ของฉันสิ่งนี้ทำให้ฉันสามารถรวมไฟล์ที่สร้างโครงการไว้ในโปรแกรมติดตั้งของฉันได้ โปรแกรมติดตั้งของฉันไม่ได้รับมันเป็นส่วนหนึ่งของผลลัพธ์ของโครงการ

การแก้ไข: (เกือบจะเตะตัวเองต่อหน้าเมื่อฉันคิดออก)

กิจกรรมสร้างใหม่:

  • แอตทริบิวต์ -R "$ (ProjectDir) SomeFile.ext"
  • คัดลอก "$ (TargetDir) SomeFile.ext" "$ (ProjectDir)"
  • แอตทริบิวต์ + R "$ (ProjectDir) SomeFile.ext"

เราทุกคนกำลังสนุกกับ Build Events ใช่ไหม? ด้านบนฉันทำ 2 สิ่งฉันลบแอตทริบิวต์อ่านอย่างเดียวตอนนี้ไฟล์ไม่ได้อ่านอย่างเดียว คัดลอกไฟล์ของฉันตามที่ฉันต้องการในตอนแรก จากนั้นแทนที่แอตทริบิวต์อ่านอย่างเดียว (ฉันเดาว่าเป็นทางเลือก) เพื่อให้ Visual Studio และ Team Foundations มีความสุข

และใช่ ... ฉันยังคงเตะตัวเองต่อหน้าคนนี้


0

ฉันมีปัญหาที่คล้ายกัน App.config ของฉันมีข้อมูลที่เหมาะสม (เช่นชื่อผู้ใช้) ซึ่งข้อมูลนี้ไม่ควรซิงค์กับ TFS

บทความแนวทางปฏิบัติที่ดีที่สุดสำหรับการปรับใช้รหัสผ่านและข้อมูลที่ละเอียดอ่อนอื่น ๆ กับ ASP.NET และ Azure App Serviceอธิบายถึงแนวทางที่ดีในการป้องกันปัญหานี้:

ใช้แอตทริบิวต์ "file" ขององค์ประกอบ "appSettings" เพื่ออ้างอิงไฟล์ config ที่ไม่ได้เพิ่มลงใน source-control


0

หากคุณมีเวอร์ชันเก่ากว่า TFS2012 และไม่สามารถสร้าง.tfignoreไฟล์หรือใช้File > Source Control > Advanced > Exclude …ตัวเลือกนี้ได้คุณสามารถลองสิ่งนี้:

  • ทำสำเนาของไฟล์เป้าหมายใน Windows Explorer
  • ยกเลิกการเปลี่ยนแปลงที่รอดำเนินการ (ถ้ามี) บนไฟล์เป้าหมายใน Team Explorer / Visual Studio
  • ลบไฟล์เป้าหมายใน Windows Explorer
  • ย้ายสำเนาของไฟล์เป้าหมายไปยังตำแหน่งของไฟล์เป้าหมายที่ถูกลบและเปลี่ยนชื่อเพื่อให้มีชื่อเดียวกับไฟล์เป้าหมายที่ถูกลบ

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


0

คุณสามารถเลือกไฟล์จาก Source Control Explorer ของคุณและคลิกขวาที่ไฟล์จากนั้นเลือกตัวเลือก "เปลี่ยนชื่อ" จากนั้นคุณสามารถเพิ่ม ".exclude" ที่ท้ายชื่อไฟล์ได้

จากนั้นอย่าลืมเช็คอินไฟล์และหลังจากนั้นคุณจะเห็นว่าไฟล์ของคุณถูกแยกออกจาก Source Control

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