Làm cách nào để TFS 2010 phát hiện các thay đổi được thực hiện đối với các tệp bên ngoài Visual Studio?


118

Tôi đang sử dụng Team Foundation Server 2010 với Visual Studio 2010.

Bất cứ khi nào tôi sửa đổi tệp bên ngoài Visual Studio, TFS dường như không phát hiện ra thay đổi được thực hiện đối với tệp và do đó không cung cấp cho tôi tùy chọn đăng ký tệp sau khi nó đã được sửa đổi.

Làm thế nào điều này có thể được giải quyết?


18
Subversion hoặc Git (và có thể những thứ khác) đang so sánh hàm băm của các tệp thay vì API để kiểm tra / đăng xuất một tệp. Đơn giản hơn nhiều và ít rủi ro hơn nhiều!
Steve B

8
tệ hơn, TFS thậm chí không nhận thấy một tệp đã thay đổi cần phải được đăng ký, vì vậy bạn thường có thể quên nó .. cho đến khi đồng nghiệp của bạn kiểm tra và nhận ra mã của bạn không biên dịch hoặc hoạt động. Không có gì ngạc nhiên khi mọi người nói TFS là "VSS trên steroid" - tốt hơn, nhưng vẫn có nhiều vấn đề của VSS.
gbjbaanb

Đó là VSS trên steroid, giống như cách mà steroid phá hủy cơ thể của bạn.
Ian Kemp

Câu trả lời:


48

Nếu bạn có kết nối mạng với máy chủ của mình khi đang làm việc bên ngoài Visual Studio, tốt nhất bạn nên tiếp tục và kiểm tra tệp trước khi chỉnh sửa nó, bằng cách sử dụng ứng dụng khách dòng lệnh tf hoặc sử dụng tích hợp trình bao Windows Explorer. có sẵn trong bản phát hành Công cụ điện TFS . (Cùng với ngày càng nhiều công cụ khác có tích hợp TFS làm cho việc này tự động, nhưng nếu bạn chỉ sử dụng notepad, đây vẫn cần phải là một bước thủ công.)

Tất nhiên, có nhiều khi bạn đang làm việc mà bạn không có sẵn kết nối mạng cho phép bạn xem các tệp.

Nếu bạn biết mình đã sửa đổi những tệp nào, bạn có thể kiểm tra chúng từ bên trong Visual Studio, sau đó bạn sẽ có thể kiểm tra lại chúng.

Nếu bạn không biết mình đã chỉnh sửa tệp nào, bạn có thể phát hiện các thay đổi bằng cách chạy tfpt onlinelệnh (cũng là một phần của bản phát hành Power Tools). Thao tác này sẽ xác định vị trí các tệp đã được sửa đổi cục bộ và kiểm tra các tệp này từ máy chủ.


Visual Studio dường như không phát hiện ra các thay đổi đối với tệp chỉ bằng cách kiểm tra chúng. Tôi vừa thử kiểm tra một thư mục và nội dung hiển thị trong các thay đổi đang chờ xử lý dưới dạng chỉnh sửa. Sau đó, tôi đã xóa thư mục trong File Explorer và làm mới các thay đổi đang chờ xử lý nhưng Visual Studio không cho biết các tệp đã bị xóa trong các thay đổi đang chờ xử lý. Ngoài ra, các tệp vẫn có trong Solution Explorer.
Kyle Delaney

160

TFS có lệnh "Đối chiếu" cho việc này:

  1. Mở Trình khám phá điều khiển nguồn
  2. Nhấp chuột phải vào thư mục có các thay đổi và chọn So sánh
  3. Chọn các tệp bạn muốn điều chỉnh (nhấn CTRL+ Ađể chọn tất cả các tệp)
  4. Nhấp vào nút Hòa hợp
  5. Đặt các tùy chọn trong hộp thoại Đối chiếu Sự khác biệt của Thư mục . Đảm bảo rằng Tệp không có các thay đổi đang chờ xử lý được đặt thành Kiểm tra
  6. Bấm OK
  7. Nếu bạn có những thay đổi cục bộ, hộp thoại Check Out sẽ được hiển thị. Đặt loại khóa ưa thích
  8. Nhấp vào Kiểm tra

Đối chiếu sự khác biệt của thư mục

Xem thêm: Đối chiếu sự khác biệt giữa các thư mục


13
Đây là câu trả lời tốt nhất vì nó không yêu cầu dòng lệnh hoặc 'Hoàn tác các thay đổi đang chờ xử lý' đầy rủi ro.
NickH

4
Đã lưu ngày của tôi! Tôi đã làm theo các bước của bạn một cách chính xác và nó hoạt động chính xác như mong đợi. :-)
Gilad Barner

4
Làm việc như mô tả. Nên là câu trả lời tốt nhất.
Nicolas

Thật không may, khi thực hiện việc này trên toàn bộ dự án của tôi, tôi gặp lỗi Đường dẫn được chỉ định, tên tệp hoặc cả hai đều quá dài. Tên đầy đủ đủ điều kiện phải ít hơn 260 ký tự và tên thư mục phải ít hơn 248 ký tự. Chọn các thư mục riêng lẻ không phải là một tùy chọn đối với tôi, vì tôi không thể nhớ tất cả các thư mục tệp mà tôi đã thay đổi. Bất kỳ ý tưởng?
kraftwer1

2
Hoạt động hoàn hảo trong bản cập nhật 3 VS 2015, cảm ơn rất nhiều. Nên là câu trả lời tốt nhất, không có lệnh phức tạp để làm cho nó hoạt động
Nicolas Leucci

35

Điều này đã làm việc cho tôi, bằng cách sử dụng TFS Power Tools:

tfpt online /adds /deletes /diff /noprompt /recursive directory-name

(trong đó tên-thư mục là đường dẫn đến thư mục sẽ được cập nhật, nếu không, nó sẽ phát hiện các thay đổi trong toàn bộ kho lưu trữ TFS của bạn)

Nếu bạn muốn biết nó sẽ làm gì mà không thực sự thực hiện bất kỳ thay đổi nào, bạn có thể buộc nó chạy khô bằng cách thêm công /previewtắc.


Cảm ơn vì mẹo @Adam Batkin. Làm việc như một cái duyên và bây giờ tôi đã ổn định! +1
iOnline247

9
Hãy lưu ý, dòng lệnh này cũng sẽ bao gồm các tệp không mong muốn: * .user, BIN \, obj, v.v.
Steve B

1
Chúc mừng, tôi đang tìm một cách dòng lệnh để có thể tự động cập nhật TFS của công ty từ kho lưu trữ Git cục bộ của mình!
Mark K Cowan

2
@SteveB có một /exclude:fld_name/*,filenamecông tắc có thể được sử dụng để loại trừ file không mong muốn .. mà halped tôi rất nhiều
Krešimir Pendic

1
Tôi chạy như thế này tfpt online /deletes /noprompt /recursive directory-namevà có hàng nghìn tệp được `thay đổi`, vì vậy phải hoàn tác. Nhưng tôi chưa bao giờ chạm vào những thứ này, chỉ cần xóa thư mục.
Dzmitry Lahoda

16
*1- make changes outside of Visual Studio
2- go to Visual Studio and open Source Control Explorer
3- right click on the folder > "Check Out for Edit" > "Check Out"
4- right click on the same folder > "Undo Pending Changes..." > "Undo changes" > "No to All"*

Tôi đã thử nghiệm cách giải quyết này trên một chi nhánh và nó đã giúp tôi rất nhiều. Nhưng chỉ có các tệp mới và thư mục mới phải được thực hiện thủ công.

Tôi khuyên bạn nên tạo một chi nhánh trước khi hoạt động. Nó cách ly bạn về thời gian hoạt động.

Lưu ý: Kỹ thuật này cũng thực hiện dọn dẹp các tệp giống hệt nhau mà TFS luôn đánh dấu là đã sửa đổi.


3
Đây thực sự nên là một bình luận về bài đăng của alga , không phải là một câu trả lời mới. Trong mọi trường hợp, tôi vẫn khuyên bạn không nên làm điều này vì cùng một lý do mà tôi đã khuyến nghị không nên khi alga đề xuất ở trên.
Edward Thomson

Hoàn toàn xuất sắc! Chính xác những gì tôi đang tìm kiếm (sau khi công ty của chúng tôi chuyển máy chủ TFS của chúng tôi và TFS / VS2010 bị cản trở bởi nó). Bây giờ, tôi vừa kiểm tra các tệp đã chỉnh sửa của mình. Cảm ơn!
Mike Gledhill

Điều này hiệu quả, nhưng MS nên cung cấp các cách tốt hơn để thực hiện việc này. Dòng lệnh và hack không cần thiết trên một sản phẩm tốt (đặc biệt nếu điều này được nhúng vào VS). SVN và Mercurial làm điều này cho vui ...
user2173353

Thay vì điểm 4, bạn có thể sử dụng tfpt uu stackoverflow.com/a/544285/10245
Tim Abell

Điều này chỉ hoàn tác những gì bạn đã làm. Nó không làm cho Visual Studio biết những gì bạn đã làm.
Kyle Delaney

7

Thử cái này. Đó là một số cách giải quyết, nhưng nó hoạt động:

  1. thực hiện các thay đổi bên ngoài Visual Studio
  2. đi tới Visual Studio và mở Trình khám phá điều khiển nguồn
  3. nhấp chuột phải vào thư mục> "Kiểm tra để Chỉnh sửa" > "Kiểm tra"
  4. nhấp chuột phải vào cùng một thư mục> "Hoàn tác thay đổi đang chờ xử lý ..." > "Hoàn tác thay đổi" > " Không cho tất cả "

Đó là nó. Các thay đổi hiện có thể nhìn thấy.


3
Tôi thực sự khuyên bạn không nên làm điều này - nỗi lo lắng lớn nhất của tôi là tôi muốn chạm vào điều này và vô tình hoàn tác tất cả các thay đổi hợp pháp của tôi. Ngoài ra, bạn đang kiểm tra tất cả các tệp, tùy thuộc vào cấu hình máy khách và máy chủ của bạn, có thể sẽ khóa một số hoặc có thể tất cả các tệp và có thể thực hiện kiểm tra mới nhất, điều này chắc chắn có thể gây phiền nhiễu.
Edward Thomson

1
Điều này chỉ hoàn tác những gì bạn đã làm. Nó không làm cho Visual Studio biết những gì bạn đã làm.
Kyle Delaney

Và nếu bạn đã tạo hoặc thêm các mục mới, trong phiên đó: Đã qua rồi!
Christian

4

Ngoài ra còn có một giải pháp khác để TFS tìm ra các tệp đã thay đổi bên ngoài Visual Studio:

  1. Mở giải pháp ngoại tuyến
  2. Trong Solution Explorer, chọn tệp giải pháp và sau đó nhấn nút Go Online ( Biểu tượng nút GoOnline)

TFS sẽ tự động quét giải pháp để tìm các thay đổi sau đó.

Bước một có thể đạt được bằng một số cách khác nhau. Đây là một số:

  • Sử dụng Tiện ích mở rộng GoOffline - rất đơn giản và hiệu quả.
  • Nếu bạn được yêu cầu thông tin đăng nhập TFS khi mở giải pháp (không có xác thực miền tự động), thì đừng nhập thông tin đăng nhập. Giải pháp sẽ mở ngoại tuyến và bạn sẽ đăng nhập sau khi nhấn nút Go Online
  • (giải pháp tối ưu) Ngắt kết nối cáp mạng của bạn; Mở giải pháp; Kết nối cáp mạng.

3

Visual Sourcesafe cũng hoạt động như vậy và cách tôi để VSS hoặc TFS nhận thấy sự thay đổi là bằng cách kiểm tra tệp một lần bên trong Visual Studio.


1

Mở Điều khiển nguồn và đi đến thư mục TFS của bạn. Nhấp chuột phải vào thư mục và chọn 'So sánh'.

Lưu ý rằng các tệp đã chỉnh sửa của bạn hiển thị được đánh dấu màu đỏ.

Tôi thấy điều này tốt hơn là tfpt onlinenó cũng giúp bạn có được các tệp không được đọc và không được chỉnh sửa.


1

Tôi đã gặp sự cố này trong quá khứ, khi Internet của tôi không hoạt động và tôi làm việc ngoại tuyến và hầu hết các thay đổi của tôi không xuất hiện trong Team Explorer.

Làm theo các bước sau: Đầu tiên, trong trình khám phá giải pháp, chọn thư mục mà bạn muốn nối lại (đối với tôi, đó là toàn bộ thư mục giải pháp của tôi) và chọn So sánh ... nhập mô tả hình ảnh ở đây Nhấp vào Sửa đổi Bộ lọc và trong văn bản bộ lọc- hộp, bạn có thể gõ:

*.cs;!obj\;!bin\;!packages\;

Trong ví dụ này, nó sẽ chỉ bao gồm các tệp C # tìm kiếm và loại trừ trong các thư mục: bin, obj và package.

Lưu ý rằng cột Đang chờ Thay đổi có thông tin cho dù tệp được đánh dấu là chỉnh sửa, thêm, v.v. ... hay không ...

  • Để đánh dấu là chỉnh sửa (khi mục cục bộ có mục máy chủ phù hợp), hãy chọn tệp và chọn Kiểm tra để chỉnh sửa ...
  • Để đánh dấu là thêm (khi mục cục bộ không có bất kỳ mục máy chủ nào), hãy chọn tệp và chọn Thêm tệp

Cuối cùng, tôi không chắc tại sao các dự án không được liệt kê ở đây (sau khi tôi xóa bộ lọc * .cs, vẫn không hiển thị), vì vậy hãy xây dựng lại giải pháp để đảm bảo các dự án cũng cập nhật

+ Trong giải pháp, nhấp vào nút kết nối (nếu hiển thị) cho biết Go Online .


0

Tôi thấy rằng trong Visual Studio 2015, khi mở dự án, Visual Studio tự phát hiện ra rằng các tệp đã được sửa đổi bên ngoài và tự động kiểm tra chúng mà tôi không cần phải làm gì cả. Kiểm tra dự án theo cách thông thường đã lưu các sửa đổi bên ngoài.


0

Trong trường hợp của tôi, cách sau đã hoạt động (ít nhất một lần tôi đã thử):

  1. Chuyển đến bảng Các thay đổi đang chờ xử lý
  2. Chọn Tùy chọn xem trong các thay đổi Được bao gồm hoặc Loại trừ.
  3. Chuyển đổi giữa Hiển thị Tất cảHiển thị Thay đổi Giải pháp
  4. Chuyển lại nếu muốn

Làm mới các thay đổi TFS

Thay đổi Tùy chọn Chế độ xem xuất hiện để buộc làm mới các tệp đã sửa đổi.

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.