Merkezi kaynak havuzuna gitmelerini önlemek için TFS'deki dosyaları / dizinleri nasıl göz ardı edebilirim?


254

TFS kaynak kontrolünde proje başına yoksaymak üzere dosya / klasör ayarlamak mümkün müdür?

Örneğin, kaynak denetimine girmek istemediğim bir varlık klasörüne sahip bir web sitem var. Bu varlıklar ayrı bir sistem tarafından korunur. Ayrıca, kaynak kontrolüne birkaç gigabayt varlık koymak istemiyorum, ancak geliştirici makinemde birkaç örneğe ihtiyacım var, ancak ikisini de kontrol etmek istemiyorum.

Kaynak kontrolüne bağlıyken bu web sitesinde çalışıyorsam ve ağacı yeniliyorsam, bu dosyalar otomatik olarak tekrar eklenecek

Bunun olmasını önlemek istiyorum.


1
Yerel Çalışma Alanları için Richard Banks gibi .tfignore -Dosyalarını kullanabilirsiniz . Bu dosyayı team-Explorerer'da Context-Menue ile ayarlamak için, cevabım bölümüne bakınız. Sunucu Çalışma Alanları için yorumlarda bir bağlantı sağladım.
gReX

Yanıtlar:


88

VS2015 ve VS2017 için

TFS (şirket içi) veya VSO (Visual Studio Online - Azure tarafından barındırılan teklif) ile çalışır

NuGet belgeleri bunun nasıl yapılacağına dair talimatlar veriyor ve bunları VSTS'ye (Azure tarafından barındırılan TFS) karşı Visual Studio 2015 ve Visual Studio 2017 için başarıyla izledim. Kasım 2016 itibarıyla her şey tamamen güncellendi Ağu 2018 .

NuGet'in talimatlarını izlemenizi öneririm, ancak yaptığım şeyi özetlemek için:

  1. packagesKlasörünüzün TFS'ye bağlı olmadığından emin olun . Eğer öyleyse, oradan çıkarın.
  2. Aşağıda oluşturduğumuz diğer her şey, .slnaksi belirtilmedikçe dosyanızın bulunduğu klasöre gider (NuGet'in talimatları bu konuda tamamen net değildir).
  3. Bir .nugetklasör oluşturun . Windows Gezgini'ni .nuget.başarıyla kaydetmesi için adlandırmak için kullanabilirsiniz .nuget(son dönemi otomatik olarak kaldırır), ancak doğrudan adlandırmaya çalışmak .nugetişe yaramayabilir (Windows sürümünüze bağlı olarak bir hata alabilir veya adı değiştirebilirsiniz) ). Veya dizin nugetini adlandırın ve üst dizini komut satırı isteminde açın. yazın. ren nuget .nuget
  4. Bu klasörün içinde bir NuGet.configdosya oluşturun ve aşağıdaki içerikleri ekleyin ve kaydedin:

NuGet.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <solution>
        <add key="disableSourceControlIntegration" value="true" />
    </solution>
</configuration>
  1. .slnKlasörünüze geri dönün ve yeni bir metin dosyası oluşturun ve adlandırın .tfignore(Windows Gezgini'ni kullanıyorsanız, yukarıdaki numarayı kullanın ve adlandırın .tfignore.)
  2. Aşağıdaki içeriği bu dosyaya yerleştirin:

.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. Tüm bunları kaydedin, TFS'ye kaydedin, ardından Visual Studio'yu kapatın ve yeniden açın; Ekip Gezgini artık paketler klasörünü bekleyen bir check-in olarak tanımlamamalıdır.
  2. Windows Gezgini aracılığıyla çeşitli çözümlerimin tümüne .tfignoredosya ve .nugetklasörü kopyalayıp yapıştırdım ve bunları taahhüt ettim ve artık packageskaynak kontrol deposuma gizlice girmeye çalışan klasörüm yok !

Daha Fazla Özelleştirme

Benim olmasa da, sirkirby tarafından bu .tfignoreşablonu kullanışlı buldum . Cevabımdaki örnek Nuget packagesklasörünü kapsıyor, ancak bu şablon başka şeyler de içeriyor ve bunu daha da özelleştirmek isterseniz yararlı olabilecek ek örnekler sunuyor.


1
Bunu VS 2017'de takip etti - TFS 2015. Bir cazibe gibi çalıştı. Tüm Nuget paketlerim artık beklemede olan değişiklik olarak görünmüyor.
RoninEngineer

Sadece tespit edilen değişiklikleri açmak ve yeni oluşturulan dosyaları beklemedeki değişikliklere elle eklemek zorunda kaldım. Dışında her şey iyi çalıştı.
Machado

Bu benim için işe yaramadı. VS 2017 - TFS 2015. Hiçbir şeyi kontrol edemiyorum. Denediğimde şu hatayı alıyorum: "D: \ Src \ MiniCoreWebAPI \ paketleri \ Microsoft.IdentityModel.Protocols.5.2.1 \ lib \ net451 \ Microsoft.IdentityModel.Protocols .dll: Yolun bir parçası bulunamadı "
Rod

Paketlerim klasörünü kontrol etmedim, ancak zaten bekleyen bir değişiklik olarak tespit edildi. Bu talimatları uyguladıktan sonra, paketleri klasöründe "Bekleyen Değişiklikleri Geri Al" zorunda kaldım, sonra yeniden oluşturduğumda ve NuGet paketleri geri yüklediğimde her şey yolundaydı.
CodeHxr

172

Yerel çalışma alanları (TFS 2012+) kullanıyorsanız, artık .tfignoreyerel klasörlerin ve dosyaların teslim alınmasını engellemek için dosyayı kullanabilirsiniz .

Bu dosyayı kaynak kontrolüne eklerseniz, ekibinizdeki diğer kişilerin aynı hariç tutma ayarlarını paylaşmasını sağlayabilirsiniz.

MSDN ile ilgili tüm ayrıntılar - http://msdn.microsoft.com/en-us/library/ms245454.aspx#tfignore

Tembel için:

.tfignoreKurallara uygulanmasını istediğiniz klasöre çağrılan bir metin dosyası yerleştirerek hangi tür dosyaların yoksayılacağını yapılandırabilirsiniz . .tfignoreDosyanın etkileri özyinelemelidir. Ancak, .tfignore bir üst klasördeki dosyanın etkilerini geçersiz kılmak için alt klasörlerde .tfignore dosyaları oluşturabilirsiniz .

Bir .tfignore dosyası için aşağıdaki kurallar geçerlidir:

  • # bir yorum satırı başlatır
  • Ve ? joker karakterler desteklenir.
  • \ Karakteri ile ön ek eklenmedikçe bir dosya özniteliği özyinelemelidir.
  • ! bir filepec'i reddeder (kalıpla eşleşen dosyalar yok sayılmaz)

Örnek dosya:

# 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
Bunu denedim. yok sayılan tek şey .tfignore dosyasının içeriği :(
user1852503

15
@SerjSagan bilgisayarım oluşturmama izin vermedi, .tfignorebu yüzden yarattım .tfignore.ve son noktayı kendi başına kaldırdı ..
Peter

5
Sorun, yalnızca 1) check-in öncesi Kaynak Denetim Gezgini penceresinde açıkça silinmiş ve 2) Bekleyen Değişiklikler penceresinde açıkça hariç tutulan kaynakları yok saymasıdır . Örneğin, paketler klasörünü yok saymak ve NuGet Paket Geri Yükleme'ye güvenmek için kullanacaksanız, 1) Kaynak Kontrol Gezgini'nde paketler klasörünü silmek ve daha sonra 2) NuGet Paket Geri Yükleme işleminden sonra Bekleyen Değişiklikler penceresinde hariç tutmak gerekir. . Aksi takdirde yine de files klasörüne giriş yapar.
Deilan

1
Windows, .tfignoreuygun bir adın bulunmaması nedeniyle dosyayı oluşturmanıza izin vermezse, dosyayı bir komut satırı penceresinden oluşturabilir veya yeniden adlandırabilirsiniz.
Zarepheth

1
Orada bazı büyük sorun VS2015 içinde .tfignore ile. Halk çok mutsuzdur , ancak sorunun açık bir ifadesi veya sorunu düzeltmek için açık bir taahhüt olduğu görülmemektedir.
bbsimonbb

71

Bu mu Team Foundation Server dosyaları (ve klasörleri) görmezden biraz hantal görünüyor. Bunu yapmak için birkaç yol buldum (TFS / Team Explorer / Visual Studio 2008 kullanarak). Bu yöntemler web sitesi ASP proje türüyle de çalışır.

Bir yol, bir projeye yeni veya mevcut bir öğe eklemektir (örn. Projeye sağ tıklayın, Mevcut Öğe Ekle veya Windows Gezgini'nden çözüm gezginine sürükleyip bırakın), TFS'nin dosya veya klasörleri işlemesine izin verin, ardından beklemeyi geri alın kalem (ler) de değişir. TFS, beklemede olan bir ekleme değişikliği olarak işaretlerini kaldıracak ve dosyalar projede sessizce duracak ve TFS'nin dışında kalacaktır.

Başka bir yol, Kaynak Denetim Gezgini'nin Klasöre Öğeler Ekle komutudur. Bu küçük bir sihirbaz başlatır ve adımlardan birinde hariç tutulacak öğeleri seçebilirsiniz (ancak, sihirbazın devam etmesine izin vermek için bu yöntemle TFS'ye en az bir öğe eklemeniz gerektiğini düşünüyorum).

Takımdaki diğer kişilerin belirli varlıkları yanlışlıkla kontrol etmesine izin vermemek için yasaklı kalıplar giriş politikası (Takım -> Takım Projesi Ayarları -> Kaynak Kontrolü ... -> Check-in Politikası altında) ekleyebilirsiniz.


7
Yasak kalıp politikam yoktu. Bir Cevap ilgili soruya bunu elde etmek için ortaya koymaktadır. Görünüşe göre TFS Elektrikli El Aletleri'nin bir parçası .
Leif Carlsen

1
Benzer bir sorunla karşılaşıyorum, Check-in Politikası'nı kullanarak kontrol edilmemesi için belirli bir klasör hakkında daha fazla ayrıntı sağlayabilir misiniz
Imran Rizvi

Hata! Haklısın, Leif. TFS Elektrikli El Aletlerinin bir parçasıdır.
Derek Morrison

Imran, ne yazık ki iş değiştirdim ve artık TFS kullanmıyorum ve geçmiş projelerime erişemiyorum, bu yüzden yasak kalıplar giriş politikası sözdiziminin sözdiziminden emin değilim. Belki bu sorular yardımcı olur? stackoverflow.com/questions/2741412/…
Derek Morrison

TFS 2010 Eklenecek dosyaları seçtikten sonra bu listeden hariç tutabilirsiniz. Mevcut dosyalara dokunamıyorum ...
JNF

47

İçin TFS 2013 :

VisualStudio- Başlat Takım Explorer içinde, PendingChanges İletişim Kutusunda, yok sayılması gereken [add] durumundaki Değişiklikleri geri alın.

Visual Studio Eklentileri tekrar algılar. On Click "Tespit: x eklenti (ler)" -in Değişiklikler Hariç

Açılan "Değişiklikleri Cadidate Edin" bölümünde -Dialog İçerik menüsü ile Dosya ve Klasörleri kolayca hariç tutabilirsiniz. Seçenekler:

  • Bu öğeyi yoksay
  • Uzantı tarafından yoksay
  • Dosya adına göre yoksay
  • Dosya klasörü tarafından yoksay (evet dosya klasörü, TFS 2013 Güncelleme 4 / Visual Studio 2013 Premium Güncelleme 4)

Değişen .tfignore-Dosyasında Giriş Yapmayı unutmayın.

İçin VS 2015/2017 :

Aynı prosedür: TeamExplorer \ Bekleyen Değişiklikler'deki "Hariç Tutulan Değişiklikler Sekmesi" nde Algılanan: xxx eklenti (ler) i tıklayın

TeamExplorer \ Dışında Beklenen Değişiklikler Sekmesi

"Aday Değişikliklerini Tanıtın" İletişim Kutusu açılır ve girişlerde Bağlam menüsü için Sağ Tıklayabilirsiniz. Yazım hatası düzeltildi :-)


Bu seçeneği bulamıyorum. VS 2015 RC'deyim.
Shimmy Weitzhandler

bu yalnızca burada ayrıntılı olarak açıklandığı gibi yerel bir çalışma alanı ile çalışıyorsanız çalışacaktır: msdn.microsoft.com/library/vstudio/…
stvn

@Shimmy: VS 2015 RC'deki prosedür hala aynı tipo ile aynı. Güncellenmiş cevabımı görün. Ancak stvn'nin işaret ettiği gibi .tfignore sadece yerel çalışma alanlarıyla çalışır. Sunucu çalışma alanları için Bekleyen Checkin'lere Ekle'yi geri almanız gerekir, cevaba buradan bakın: stackoverflow.com/questions/21887308/…
gReX

@Shimmy: TFS-Server 2015'e bağlı mısınız? VS
gReX'de

@ qw1564 Eminim, soru ilk sorulduğunda, kılavuz yol mümkün değildi. Ama şimdi seçeceğim cevap bu. Krediler için teşekkürler!
gReX

5

SVN gibi TFS'deki dosyaları Yoksay için mükemmel bir yol buldum.
Her şeyden önce, yoksaymak istediğiniz dosyayı seçin (örn. Web.config).
Şimdi menü sekmesine gidin ve seçin:

Dosya Kaynağı denetimi> Gelişmiş> web.config dosyasını kaynak denetiminden hariç tutma

... ve bom; dosyanız kaynak denetiminin dışında bırakılıyor.


1
bu benim için kod oluşturulan dosyalar için TFS 2010 üzerinde çalışıyor. TEŞEKKÜRLER!
BozoJoe

1
Bu gerçekten işe yarıyor, .tfignore benim için çalışmıyor. Teşekkürler bir ton
EpicKip

2
VS 2018'de bu seçeneğim yok
Adam

4

Web Sitesi Projelerini kullandığınızı varsayacağım. Bunlar proje dizinlerini otomatik olarak tarar ve her şeyi kaynak kontrolüne atar. Onları durdurmanın bir yolu yok.

Ancak, umutsuzluğa kapılmayın. Web Uygulama Projeleri bu garip ve beklenmedik (imho: moronic) davranışı sergilemez. WAP, VS2005 için bir eklentidir ve doğrudan VS2008 ile birlikte gelir.

Projelerinizi WAP olarak değiştirmeye alternatif olarak, Varlıklar klasörünü Kaynak denetiminin dışına ve TFS Belge Kitaplığı'na taşımayı düşünebilirsiniz. Bunu sadece projenin kendisi doğrudan varlık dosyalarını kullanmıyorsa yapın.


evet, varsayımınız doğru. Ben böyle olacağını düşündüm, sadece hiçbir şey kaçırmadım iki kat emin olmak istedim.
Dave
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.