Làm cách nào để bỏ qua các tệp / thư mục trong TFS để tránh chúng đi đến kho lưu trữ nguồn trung tâm?


254

Có thể thiết lập các tệp / thư mục để bỏ qua trên cơ sở từng dự án trong kiểm soát nguồn TFS không?

Ví dụ: tôi có một trang web có thư mục tài sản mà tôi không muốn truy cập để kiểm soát nguồn. Những tài sản này được duy trì bởi một hệ thống riêng biệt. Ngoài ra, tôi không muốn đặt một vài gigabyte tài sản vào kiểm soát nguồn, nhưng tôi cần một vài mẫu trên máy dev của mình, nhưng tôi cũng không muốn kiểm tra những tài sản đó.

Nếu tôi đang làm việc trên trang web này trong khi bị ràng buộc với kiểm soát nguồn và tôi làm mới cây, các tệp này sẽ tự động được thêm lại

Tôi muốn ngăn chặn điều này xảy ra.


1
Đối với Không gian làm việc cục bộ, bạn có thể sử dụng .tfignore -Files như Richard Banks chỉ ra. Để điều chỉnh tệp này với Context-Menue trong team-Explorerer, hãy xem Câu trả lời của tôi. Đối với không gian làm việc của máy chủ, tôi đã cung cấp một liên kết trong các bình luận.
gReX

Câu trả lời:


88

Dành cho VS2015 và VS2017

Hoạt động với TFS (tại chỗ) hoặc VSO (Visual Studio Online - ưu đãi được lưu trữ trên Azure)

Tài liệu NuGet cung cấp hướng dẫn về cách thực hiện điều này và tôi đã theo dõi chúng thành công cho Visual Studio 2015 & Visual Studio 2017 so với VSTS (TFS lưu trữ Azure). Mọi thứ được cập nhật đầy đủ kể từ tháng 11 năm 2016 tháng 8 năm 2018.

Tôi khuyên bạn nên làm theo hướng dẫn của NuGet nhưng chỉ tóm tắt lại những gì tôi đã làm:

  1. Hãy chắc chắn rằng packagesthư mục của bạn không được cam kết với TFS. Nếu có, hãy lấy nó ra khỏi đó.
  2. Mọi thứ khác mà chúng tôi tạo bên dưới đều đi vào cùng một thư mục mà .slntệp của bạn tồn tại trừ khi được chỉ định khác (hướng dẫn của NuGet không hoàn toàn rõ ràng về điều này).
  3. Tạo một .nugetthư mục. Bạn có thể sử dụng Windows Explorer để đặt tên .nuget.cho nó để lưu thành công vì .nuget(nó tự động xóa giai đoạn trước) nhưng trực tiếp cố gắng đặt tên cho nó .nugetcó thể không hoạt động (bạn có thể gặp lỗi hoặc có thể thay đổi tên, tùy thuộc vào phiên bản Windows của bạn ). Hoặc đặt tên thư mục nuget và mở thư mục cha trong dấu nhắc dòng lệnh. kiểu. ren nuget .nuget
  4. Trong thư mục đó, tạo một NuGet.configtệp và thêm các nội dung sau và lưu nó:

NuGet.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <solution>
        <add key="disableSourceControlIntegration" value="true" />
    </solution>
</configuration>
  1. Quay trở lại .slnthư mục của bạn và tạo một tệp văn bản mới và đặt tên cho nó .tfignore(nếu sử dụng Windows Explorer, hãy sử dụng thủ thuật tương tự như trên và đặt tên cho nó .tfignore.)
  2. Đặt nội dung sau vào tập tin đó:

.tác hiệu:

# 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. Lưu tất cả những điều này, cam kết nó với TFS, sau đó đóng và mở lại Visual Studio và Team Explorer sẽ không còn xác định thư mục gói là một đăng ký đang chờ xử lý.
  2. Sao chép / dán qua Windows Explorer .tfignoretệp và .nugetthư mục vào tất cả các giải pháp khác nhau của tôi và cam kết chúng và tôi không còn có packagesthư mục cố gắng lẻn vào repo kiểm soát nguồn của mình!

Tùy chỉnh thêm

Trong khi không phải của tôi, tôi đã tìm thấy mẫu này .tfignorebởi sirkirby là tiện dụng. Ví dụ trong câu trả lời của tôi bao gồm packagesthư mục Nuget nhưng mẫu này bao gồm một số thứ khác cũng như cung cấp các ví dụ bổ sung có thể hữu ích nếu bạn muốn tùy chỉnh thêm.


1
Đã làm theo điều này trên VS 2017 - TFS 2015. Làm việc như một cơ duyên. Tất cả các gói Nuget của tôi không còn hiển thị dưới dạng các thay đổi đang chờ xử lý.
James Walsh Jr

Tôi chỉ phải mở các thay đổi được phát hiện và thêm các tệp mới được tạo vào các thay đổi đang chờ xử lý bằng tay. Ngoại trừ việc mọi thứ hoạt động tốt.
Machado

Điều này đã không làm việc cho tôi. VS 2017 - TFS 2015. Tôi không thể kiểm tra bất cứ điều gì. Khi tôi thử, tôi gặp lỗi sau: "D: \ Src \ MiniCoreWebAPI \ gói \ Microsoft.IdentityModel.Prot Protocol.5.2.1 \ lib \ net451 \ Microsoft.IdentityModel.Prot lúc: Không thể tìm thấy một phần của con đường "
Rod

Tôi đã không kiểm tra thư mục gói của mình, nhưng nó đã được phát hiện dưới dạng thay đổi đang chờ xử lý. Sau khi áp dụng các hướng dẫn này, tôi phải "Hoàn tác các thay đổi đang chờ xử lý" trên thư mục gói, sau đó mọi thứ đều ổn khi tôi xây dựng lại và NuGet đã khôi phục các gói.
CodeHxr

172

Nếu bạn đang sử dụng không gian làm việc cục bộ (TFS 2012+), giờ đây bạn có thể sử dụng .tfignore tệp để loại trừ các thư mục và tệp cục bộ khỏi bị kiểm tra.

Nếu bạn thêm tệp đó vào kiểm soát nguồn, bạn có thể đảm bảo những người khác trong nhóm của bạn chia sẻ cùng cài đặt loại trừ.

Chi tiết đầy đủ về MSDN - http://msdn.microsoft.com/en-us/l Library / ms245454.aspx# tfignore

Dành cho người lười biếng:

Bạn có thể định cấu hình loại tệp nào bị bỏ qua bằng cách đặt tệp văn bản được gọi .tfignoretrong thư mục nơi bạn muốn áp dụng quy tắc. Các hiệu ứng của .tfignoretập tin được đệ quy. Tuy nhiên, bạn có thể tạo tệp .tfignore trong các thư mục con để ghi đè các hiệu ứng của .tfignore tệp trong thư mục mẹ.

Các quy tắc sau áp dụng cho tệp .tfignore:

  • # bắt đầu một dòng bình luận
  • Và ? ký tự đại diện được hỗ trợ.
  • Một tệp tin được đệ quy trừ khi có ký tự \.
  • ! phủ nhận một tập tin (các tập tin phù hợp với mẫu không bị bỏ qua)

Tệp ví dụ:

# 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
tôi đã thử làm điều đó điều duy nhất bị bỏ qua là nội dung của tệp .tfignore :(
user1852503

15
@SerjSagan Máy tính của tôi không cho phép tôi tạo .tfignorenên tôi đã tạo .tfignore.và nó tự xóa dấu chấm cuối cùng ..
Peter

5
Vấn đề là nó chỉ bỏ qua các tài nguyên, đã bị xóa 1) rõ ràng trong cửa sổ Source Control Explorer trước khi đăng ký và 2) bị loại trừ rõ ràng trong cửa sổ Thay đổi đang chờ xử lý . Ví dụ: nếu bạn định sử dụng nó để bỏ qua thư mục gói và dựa vào Khôi phục gói NuGet, bạn sẽ cần 1) xóa thư mục gói trong Source Control Explorer và sau đó 2) loại trừ nó trong cửa sổ Pending Change sau quá trình Khôi phục gói NuGet . Nếu không, nó vẫn sẽ kiểm tra trong thư mục gói .
Deilan

1
Nếu Windows sẽ không cho phép bạn tạo .tfignoretệp do thiếu tên thích hợp, bạn có thể tạo hoặc đổi tên tệp qua cửa sổ dòng lệnh.
Zarepheth

1
một số vấn đề lớn với .tfignore trong VS2015. Dân gian rất không hài lòng , nhưng dường như không có tuyên bố rõ ràng về vấn đề này, hoặc cam kết rõ ràng để khắc phục nó.
bbsimonbb

71

làm có vẻ một chút cồng kềnh để bỏ qua các file (và thư mục) trong Team Foundation Server. Tôi đã tìm thấy một vài cách để làm điều này (sử dụng TFS / Team Explorer / Visual Studio 2008). Các phương thức này cũng hoạt động với loại dự án ASP của trang web.

Một cách là thêm một mục mới hoặc hiện có vào một dự án (ví dụ: nhấp chuột phải vào dự án, Thêm mục hiện có hoặc kéo và thả từ Windows explorer vào trình khám phá giải pháp), hãy để TFS xử lý (các) tệp hoặc thư mục, sau đó hoàn tác thay đổi trên (các) mục. TFS sẽ bỏ đánh dấu chúng là có một thay đổi bổ sung đang chờ xử lý và các tệp sẽ nằm yên trong dự án và đứng ngoài TFS.

Một cách khác là với lệnh Thêm các mục vào thư mục của Source Control Explorer. Thao tác này sẽ khởi chạy một trình hướng dẫn nhỏ và trên một trong các bước bạn có thể chọn các mục để loại trừ (mặc dù, tôi nghĩ rằng bạn phải thêm ít nhất một mục vào TFS bằng phương thức này để trình hướng dẫn cho phép bạn tiếp tục).

Bạn thậm chí có thể thêm chính sách đăng ký mẫu bị cấm (trong Nhóm -> Cài đặt dự án nhóm -> Kiểm soát nguồn ... -> Chính sách đăng ký) để không cho phép người khác trong nhóm kiểm tra nhầm tài sản nhất định.


7
Tôi đã không có một chính sách mẫu bị cấm. Trả lời cho một câu hỏi liên quan tiết lộ nơi để có được nó. Nó rõ ràng là một phần của TFS Power Tools .
Leif Carlsen

1
Tôi đang đối mặt với vấn đề tương tự, bạn có thể cung cấp thêm chi tiết về một thư mục cụ thể để không đăng ký bằng Chính sách đăng ký
Imran Rizvi

Rất tiếc - bạn nói đúng, Leif. Nó là một phần của Công cụ điện TFS.
Derek Morrison

Thật không may, tôi đã chuyển đổi công việc và không còn sử dụng TFS và không có quyền truy cập vào các dự án trước đây của tôi, vì vậy tôi không chắc chắn về cú pháp cho cú pháp chính sách đăng ký mẫu bị cấm. Có lẽ câu hỏi này giúp? stackoverflow.com/questions/2741412/ Lời
Derek Morrison

TFS 2010 Sau khi bạn chọn tệp để đưa vào, bạn có thể loại trừ khỏi danh sách đó. Không thể chạm vào các tệp hiện có ...
JNF

47

Đối với TFS 2013 :

Bắt đầu trong VisualStudio- Team Explorer , trong Hộp thoại PendingChanges hoàn tác các Thay đổi với trạng thái [add], cần bỏ qua.

Visual Studio sẽ phát hiện lại (các) Thêm. Bấm vào "Đã phát hiện: x add (s)" -in thay đổi bị loại trừ

Trong phần "Thúc đẩy thay đổi Cadidate" đã mở Bạn có thể dễ dàng loại trừ các tệp và thư mục với Contextmenu. Các tùy chọn là:

  • Bỏ qua mục này
  • Bỏ qua bởi phần mở rộng
  • Bỏ qua theo tên tập tin
  • Bỏ qua bởi ffolder (có ffolder, TFS 2013 Update 4 / Visual Studio 2013 Premium Update 4)

Đừng quên Kiểm tra tệp .tfignore đã thay đổi.

Đối với VS 2015/2017 :

Quy trình tương tự: Trong "Tab thay đổi bị loại trừ" trong TeamExplorer \ Pending Change nhấp vào Đã phát hiện: xxx add (s)

Tab thay đổi bị loại trừ trong TeamExplorer \ Pending Change

Hộp thoại "Thúc đẩy thay đổi ứng viên" mở ra và trên các mục bạn có thể nhấp chuột phải vào Contextmenu. Typo đã được sửa bây giờ :-)


Dường như không thể tìm thấy tùy chọn đó. Tôi đang trên VS 2015 RC.
Shimmy Weitzhandler

điều này sẽ chỉ làm việc nếu bạn đang làm việc với một không gian làm việc tại địa phương, như đã mô tả một cách chi tiết, ở đây: msdn.microsoft.com/library/vstudio/...
stvn

@Shimmy: Quy trình trong VS 2015 RC là như nhau, với cùng một lỗi đánh máy. Xem câu trả lời cập nhật của tôi. Nhưng như stvn chỉ ra .tfignore chỉ hoạt động với không gian làm việc cục bộ. Đối với không gian làm việc của máy chủ, bạn phải hoàn tác Bao gồm trong Đăng ký đang chờ xử lý, xem câu trả lời tại đây: stackoverflow.com/questions/21887308/
Thẻ

@Shimmy: Bạn đã kết nối với TFS-Server 2015 chưa? Đảm bảo rằng bạn bắt đầu với đội Explorer trong VS
gReX

@ qw1564 Tôi khá chắc chắn, khi câu hỏi được hỏi đầu tiên, nó không thể thực hiện được. Nhưng bây giờ, đây là câu trả lời tôi sẽ chọn. Cảm ơn các khoản tín dụng!
gReX

5

Tôi đã tìm thấy cách hoàn hảo để Bỏ qua các tệp trong TFS giống như SVN.
Trước hết, chọn tệp mà bạn muốn bỏ qua (ví dụ: Web.config).
Bây giờ hãy chuyển đến tab menu và chọn:

Kiểm soát nguồn tệp> Nâng cao> Loại trừ web.config khỏi kiểm soát nguồn

... và bùm; tập tin của bạn bị loại trừ vĩnh viễn khỏi kiểm soát nguồn.


1
cái này hoạt động với tôi trên TFS 2010 cho các tệp được tạo mã. CÁM ƠN!
BozoJoe

1
Điều này thực sự hoạt động, .tfignore không hoạt động đối với tôi. Cảm ơn rất nhiều
EpicKip

2
Tôi không có tùy chọn này trong VS 2018
Adam

4

Tôi sẽ giả định rằng bạn đang sử dụng các dự án trang web. Chúng tự động thu thập dữ liệu thư mục dự án của họ và ném mọi thứ vào kiểm soát nguồn. Không có cách nào để ngăn chặn chúng.

Tuy nhiên, đừng tuyệt vọng. Các dự án ứng dụng web không thể hiện hành vi kỳ lạ và khá bất ngờ (imho: moronic) này. WAP là một addon trên cho VS2005 và đi kèm với VS2008.

Thay thế cho việc thay đổi các dự án của bạn thành WAP, bạn có thể xem xét chuyển thư mục Tài sản ra khỏi kiểm soát Nguồn và vào Thư viện Tài liệu TFS. Chỉ làm điều này NẾU bản thân dự án không sử dụng trực tiếp các tệp tài sản.


vâng, giả định của bạn là chính xác. Tôi nghĩ đó là trường hợp, chỉ muốn chắc chắn rằng tôi đã không bỏ lỡ bất cứ điều gì.
Dave
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.