Bagaimana cara mengabaikan file / direktori di TFS karena menghindarinya untuk pergi ke repositori sumber pusat?

254

Apakah mungkin untuk mengatur file / folder untuk diabaikan berdasarkan per proyek dalam kontrol sumber TFS?

Misalnya, saya punya situs web dengan folder aset yang saya tidak ingin masuk ke kontrol sumber. Aset-aset ini dikelola oleh sistem yang terpisah. Juga, saya tidak ingin memasukkan beberapa gigabyte aset ke dalam kontrol sumber, tetapi saya perlu beberapa sampel di mesin dev saya, tetapi saya juga tidak ingin memeriksanya.

Jika saya bekerja di situs web ini ketika terikat ke kontrol sumber dan saya menyegarkan pohon, file-file ini secara otomatis akan ditambahkan lagi

Saya ingin mencegah hal ini terjadi.

Dave
sumber
1
Untuk ruang kerja lokal Anda dapat menggunakan .tfignore -File seperti yang ditunjukkan oleh Richard Banks. Untuk menyesuaikan file ini dengan Context-Menue di team-Explorerer, lihat Jawaban saya. Untuk Server-Workspaces saya memberikan tautan di komentar.
gReX

Jawaban:

88

Untuk VS2015 dan VS2017

Bekerja dengan TFS (on-prem) atau VSO (Visual Studio Online - penawaran yang di-hosting oleh Azure)

Dokumentasi NuGet memberikan instruksi tentang cara menyelesaikan ini dan saya hanya mengikuti mereka dengan sukses untuk Visual Studio 2015 & Visual Studio 2017 terhadap VSTS (Azure-host TFS). Semuanya diperbarui sepenuhnya pada November 2016 Agustus 2018.

Saya sarankan Anda mengikuti instruksi NuGet tetapi hanya untuk rekap apa yang saya lakukan:

  1. Pastikan packagesfolder Anda tidak berkomitmen untuk TFS. Jika ya, keluarkan dari sana.
  2. Segala sesuatu yang kita buat di bawah ini masuk ke folder yang sama dengan .slnfile Anda ada kecuali ditentukan sebaliknya (instruksi NuGet tidak sepenuhnya jelas tentang ini).
  3. Buat .nugetfolder. Anda dapat menggunakan Windows Explorer untuk menamainya agar .nuget.berhasil disimpan sebagai .nuget(secara otomatis menghapus periode terakhir) tetapi secara langsung mencoba untuk menamai itu .nugetmungkin tidak berfungsi (Anda mungkin mendapatkan kesalahan atau mungkin mengubah namanya, tergantung pada versi Windows Anda ). Atau beri nama nuget direktori, dan buka direktori induk di prompt baris perintah. Tipe. ren nuget .nuget
  4. Di dalam folder itu, buat NuGet.configfile dan tambahkan konten berikut dan simpan:

NuGet.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <solution>
        <add key="disableSourceControlIntegration" value="true" />
    </solution>
</configuration>
  1. Kembali ke .slnfolder Anda dan buat file teks baru dan beri nama .tfignore(jika menggunakan Windows Explorer, gunakan trik yang sama seperti di atas dan beri nama .tfignore.)
  2. Masukkan konten berikut ke dalam file itu:

.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. Simpan semua ini, komit ke TFS, lalu tutup & buka kembali Visual Studio dan Team Explorer seharusnya tidak lagi mengidentifikasi folder paket sebagai check-in yang tertunda.
  2. Salin / tempel melalui Windows Explorer .tfignorefile dan .nugetfolder ke semua berbagai solusi saya dan lakukan mereka dan saya tidak lagi memiliki packagesfolder yang mencoba menyelinap ke repo kontrol sumber saya!

Kustomisasi Lebih Lanjut

Meskipun bukan milik saya, saya menemukan templat ini .tfignoreoleh sirkirby berguna. Contoh dalam jawaban saya mencakup packagesfolder Nuget tetapi template ini mencakup beberapa hal lain serta memberikan contoh tambahan yang dapat berguna jika Anda ingin menyesuaikan ini lebih lanjut.

Jaxidian
sumber
1
Diikuti ini pada VS 2017 - TFS 2015. Bekerja seperti pesona. Semua paket Nuget saya tidak lagi muncul sebagai perubahan yang tertunda.
James Walsh Jr
Saya hanya harus membuka perubahan yang terdeteksi dan menambahkan file yang baru dibuat ke perubahan yang tertunda dengan tangan. Kecuali bahwa semuanya bekerja dengan baik.
Machado
Ini tidak berhasil untuk saya. VS 2017 - TFS 2015. Saya tidak dapat memeriksa apa pun. Ketika saya mencoba, saya mendapatkan kesalahan berikut: "D: \ Src \ MiniCoreWebAPI \ Packages \ Microsoft.IdentityModel.Protocols.5.2.1 \ lib \ net451 \ Microsoft.IdentityModel.Protocols .dll: Tidak dapat menemukan bagian dari jalan "
Rod
Folder paket saya tidak saya periksa, tetapi sudah terdeteksi sebagai perubahan yang tertunda. Setelah menerapkan instruksi ini, saya harus "Undo Pending Changes" pada folder paket, maka semuanya baik-baik saja ketika saya membangun kembali dan NuGet mengembalikan paket.
CodeHxr
172

Jika Anda menggunakan ruang kerja lokal (TFS 2012+) Anda sekarang dapat menggunakan .tfignorefile tersebut untuk mengecualikan folder dan file lokal agar tidak diperiksa.

Jika Anda menambahkan file itu ke kontrol sumber, Anda dapat memastikan orang lain di tim Anda berbagi pengaturan pengecualian yang sama.

Detail lengkap tentang MSDN - http://msdn.microsoft.com/en-us/library/ms245454.aspx#tfignore

Untuk yang malas:

Anda dapat mengonfigurasi jenis file mana yang diabaikan dengan menempatkan file teks yang disebut .tfignoredi folder tempat Anda ingin aturan diterapkan. Efek .tfignorefile rekursif. Namun, Anda dapat membuat file .tfignore di sub-folder untuk mengabaikan efek .tfignore file di folder induk.

Aturan berikut ini berlaku untuk file .tfignore:

  • # memulai baris komentar
  • Dan ? wildcard didukung.
  • Filespec bersifat rekursif kecuali diawali oleh karakter \.
  • ! meniadakan filespec (file yang sesuai dengan pola tidak diabaikan)

File contoh:

# 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
Richard Banks
sumber
35
Saya sudah mencoba melakukan itu. satu-satunya hal yang diabaikan adalah isi dari file .tfignore :(
user1852503
15
@SerjSagan komputer saya tidak mengizinkan saya untuk membuat .tfignorejadi saya membuat .tfignore.dan menghapus titik terakhir sendiri ..
Peter
5
Masalahnya adalah ia hanya mengabaikan sumber daya, yang 1) dihapus secara eksplisit di jendela Source Control Explorer sebelum check-in dan 2) secara eksplisit dikecualikan di jendela Pending Changes . Misalnya, jika Anda akan menggunakannya untuk mengabaikan folder paket dan mengandalkan Pemulihan Paket NuGet, Anda harus 1) menghapus folder paket di Source Control Explorer dan kemudian 2) mengecualikannya di jendela Pending Changes setelah proses Pemulihan Paket NuGet . Kalau tidak, masih akan masuk folder paket .
Deilan
1
Jika Windows tidak akan membiarkan Anda membuat .tfignorefile karena tidak memiliki nama yang tepat, Anda dapat membuatnya atau mengganti nama melalui jendela baris perintah.
Zarepheth
1
Ada beberapa masalah utama dengan .tfignore di VS2015. Rakyat sangat tidak bahagia , tetapi tampaknya tidak ada pernyataan yang jelas tentang masalah ini, atau komitmen yang jelas untuk memperbaikinya.
bbsimonbb
71

Ini tidak tampak sedikit rumit untuk mengabaikan file (dan folder) di Team Foundation Server. Saya telah menemukan beberapa cara untuk melakukan ini (menggunakan TFS / Team Explorer / Visual Studio 2008). Metode-metode ini bekerja dengan tipe proyek situs web ASP juga.

Salah satu caranya adalah dengan menambahkan item baru atau yang sudah ada ke proyek (misalnya klik kanan pada proyek, Tambah Item yang Ada atau seret dan lepas dari Windows explorer ke dalam solusi explorer), biarkan TFS memproses file atau folder, kemudian membatalkan pending perubahan pada item. TFS akan menghapus tanda mereka sebagai memiliki perubahan add yang tertunda, dan file akan duduk diam di proyek dan tetap keluar dari TFS.

Cara lain adalah dengan perintah Add Items to Folder dari Source Control Explorer. Ini meluncurkan wizard kecil, dan pada salah satu langkah Anda dapat memilih item untuk dikecualikan (meskipun, saya pikir Anda harus menambahkan setidaknya satu item ke TFS dengan metode ini agar wizard memungkinkan Anda melanjutkan).

Anda bahkan dapat menambahkan kebijakan check-in pola terlarang (di bawah Tim -> Pengaturan Proyek Tim -> Kontrol Sumber ... -> Kebijakan Check-in) untuk melarang orang lain di tim untuk tidak keliru memeriksa aset tertentu.

Derek Morrison
sumber
7
Saya tidak memiliki kebijakan pola terlarang. Jawaban untuk pertanyaan terkait mengungkapkan di mana mendapatkannya. Ini rupanya bagian dari TFS Power Tools .
Leif Carlsen
1
Saya menghadapi masalah serupa, dapatkah Anda memberikan detail lebih lanjut pada folder tertentu agar tidak checkin menggunakan Kebijakan Check-in
Imran Rizvi
Whoops - Anda benar, Leif. Itu adalah bagian dari TFS Power Tools.
Derek Morrison
Imran, sayangnya saya beralih pekerjaan, dan tidak lagi menggunakan TFS dan tidak memiliki akses ke proyek masa lalu saya, jadi saya tidak yakin tentang sintaks untuk pola terlarang sintaksis kebijakan check-in. Mungkin pertanyaan ini membantu? stackoverflow.com/questions/2741412/…
Derek Morrison
TFS 2010 Setelah Anda memilih file untuk dimasukkan, Anda dapat mengecualikan dari daftar itu. Tidak dapat menyentuh file yang ada ...
JNF
47

Untuk TFS 2013 :

Mulai di VisualStudio- Team Explorer , di Dialog PendingChanges membatalkan Perubahan dengan status [add], yang harus diabaikan.

Visual Studio akan mendeteksi Add (s) lagi. Klik "Terdeteksi: x tambahkan" -dalam Perubahan yang Dikecualikan

Dalam "Promote Cadidate Changes" yang dibuka, -Dialog Anda dapat dengan mudah mengecualikan File dan Folder dengan Contextmenu. Pilihannya adalah:

  • Abaikan item ini
  • Abaikan dengan ekstensi
  • Abaikan dengan nama file
  • Abaikan oleh ffolder (yes ffolder, TFS 2013 Update 4 / Visual Studio 2013 Premium Update 4)

Jangan lupa untuk Memeriksa Di .tfignore-File yang diubah.

Untuk VS 2015/2017 :

Prosedur yang sama: Di "Tab Perubahan yang Dikecualikan" di TeamExplorer \ Perubahan yang Tertunda klik pada Terdeteksi: xxx add (s)

Tab Perubahan yang Dikecualikan di TeamExplorer \ Pending Changes

Dialog "Promote Calon Changes" terbuka, dan pada entri Anda dapat Klik-kanan untuk Contextmenu. Kesalahan ketik sudah diperbaiki sekarang :-)

gReX
sumber
Tampaknya tidak dapat menemukan opsi itu. Saya menggunakan VS 2015 RC.
Shimmy Weitzhandler
ini hanya akan berfungsi jika Anda bekerja dengan ruang kerja lokal, seperti dijelaskan secara terperinci, di sini: msdn.microsoft.com/library/vstudio/…
stvn
@ Kimmy: Prosedur dalam VS 2015 RC adalah sama, dengan masih kesalahan ketik yang sama. Lihat Jawaban saya yang diperbarui. Tetapi seperti yang ditunjukkan oleh stvn .tfignore hanya berfungsi dengan ruang kerja lokal. Untuk server-workspace Anda harus membatalkan Sertakan di Pending Checkin, lihat jawaban di sini: stackoverflow.com/questions/21887308/…
gReX
@ Shimmy: Apakah Anda terhubung ke TFS-Server 2015? Pastikan, bahwa Anda mulai dengan Team Explorer di VS
gReX
@ qw1564 Saya cukup yakin, ketika pertanyaan diajukan pertama, itu tidak mungkin dengan cara gui. Tetapi sekarang, inilah jawaban yang akan saya pilih. Terima kasih atas kreditnya!
gReX
5

Saya menemukan cara sempurna untuk Abaikan file di TFS seperti SVN.
Pertama-tama, pilih file yang ingin Anda abaikan (mis. Web.config).
Sekarang buka tab menu dan pilih:

Kontrol Sumber File> Tingkat Lanjut> Kecualikan web.config dari kontrol sumber

... dan boom; file Anda secara permanen dikecualikan dari kontrol sumber.

Bharat
sumber
1
ini bekerja untuk saya di TFS 2010 untuk file yang dihasilkan kode. TERIMA KASIH!
BozoJoe
1
Ini sebenarnya berfungsi, .tfignore tidak bekerja untuk saya. Terima kasih banyak
EpicKip
2
Saya tidak memiliki opsi ini dalam VS 2018
Adam
4

Saya akan menganggap Anda menggunakan Proyek Situs Web. Ini secara otomatis merayapi direktori proyek mereka dan membuang semuanya ke dalam kendali sumber. Tidak ada cara untuk menghentikan mereka.

Namun, jangan putus asa. Proyek Aplikasi Web tidak menunjukkan perilaku aneh dan agak tak terduga ini (imho: moronic). WAP adalah tambahan untuk VS2005 dan hadir langsung dengan VS2008.

Sebagai alternatif untuk mengubah proyek Anda menjadi WAP, Anda dapat mempertimbangkan untuk memindahkan folder Aset dari kontrol Sumber dan ke Perpustakaan Dokumen TFS. Hanya lakukan ini JIKA proyek itu sendiri tidak secara langsung menggunakan file aset.

Bukan saya
sumber
ya, anggapan Anda benar. Saya pikir itu akan terjadi, hanya ingin menjadi dua kali lipat yakin saya tidak melewatkan apa pun.
Dave