2015-03-11 22 views
13

Tôi đang sử dụng Bản cập nhật VS2013 4 với TFS 2013 Update 4. Trong Source Control Explorer, bất cứ khi nào tôi di chuyển tệp từ thư mục này sang thư mục khác, tôi có thể thấy lịch sử của tệp được giữ nguyên trong vị trí. Tuy nhiên, lịch sử đó đã biến mất khi tôi kiểm tra các thay đổi đang chờ xử lý. Điều tương tự cũng xảy ra khi tôi cố gắng chạy lệnh "tf move". Vì vậy, làm thế nào bạn có thể di chuyển một tập tin trong TFS và vẫn giữ lịch sử của tập tin?Di chuyển tệp mất lịch sử trong TFS 2013

+0

Xem thêm: http://stackoverflow.com/questions/27491584/how-can-i-fix-tfs-history-after-rename – jessehouwing

+0

Tùy thuộc vào lý do di chuyển của bạn, bạn cũng có thể sử dụng sửa đổi chi nhánh để giải quyết vấn đề này. Bạn đang tạo loại thay đổi nào? – moarboilerplate

+0

Điều này cũng xảy ra khi tôi hợp nhất chi nhánh – Damian

Trả lời

18

Khi tệp được đổi tên chính xác, Lịch sử không phải là "Đã qua", nó được liên kết với "tên cũ" thay thế.Một đổi tên đó được thực hiện một cách đúng đắn (theo dõi như một đổi tên và không phải là một delete + thêm) có một lựa chọn Drilldown để xem các "cũ" lịch sử:

enter image description here

  • changeset 81 ~ 82 chứa thay đổi đối với tên cũ
  • changeset 83 chứa delete + đổi tên
  • changeset 84 một sự thay đổi mới mà đã được kiểm tra trong sau khi đổi tên

Khi đổi tên được thực hiện bên ngoài o f Trình khám phá kiểm soát nguồn (hoặc từ một phiên bản rất cũ của Trình khám phá kiểm soát nguồn (ví dụ: VS 2008)) hoặc bên ngoài Solution Explorer, khi đó thay đổi sẽ được phát hiện dưới dạng hai hành động riêng lẻ, một trong số xóa và một thêm. Bạn có thể sử dụng cửa sổ "Pending Changes" để thúc đẩy chúng cho đổi tên sao cho lịch sử được bảo tồn:

enter image description here

Trên dòng lệnh này chỉ có thể được thực hiện bằng "tf đổi tên" và "tf di chuyển". Sử dụng các lệnh "mv" và "ren" chuẩn sẽ không bảo toàn được lịch sử.

Dưới đây là một ví dụ nữa của việc sử dụng tất cả các phương pháp khác nhau và rõ ràng cho thấy rằng lịch sử được bảo tồn bằng cách nhìn vào lịch sử của tên tập tin hiện tại:

enter image description here

+0

Cảm ơn @ jessehouwing vì câu trả lời kỹ lưỡng của bạn! Tôi thực sự chạy lệnh "tf move" và như bạn đã nói nó đã bảo tồn lịch sử. Chỉ là tôi không biết tùy chọn khoan xuống! Bây giờ tôi quay trở lại tôi có thể thấy lịch sử "cũ hơn". – TDN

+0

Tôi chỉ thay đổi nó :) – TDN

+0

còn thư mục đã di chuyển thì sao? Giải pháp duy nhất tôi biết là sử dụng lịch sử tf hoặc đi đến các tập tin theo nó, hoặc hiển thị các thư mục đã xóa trong Source Control Explorer và truy vấn lịch sử ở đó. – vezenkov

2

Tôi gặp sự cố này từ số question này.

Sự cố tồn tại kể từ TFS2010 và không chỉ là vấn đề đối với việc đổi tên hoặc di chuyển tệp, mà còn đổi tên hoặc di chuyển thư mục. Điều tồi tệ nhất là nếu bạn đổi tên chi nhánh và sau đó xem lịch sử thư mục. Sau đó, bạn chỉ tìm thấy changeset đổi tên của bạn.

Here bạn có thể thấy phản ứng của MS về tác vụ này. Về cơ bản họ nói rằng họ không làm điều đó bởi vì nó là rất nhiều công việc và làm cho lịch sử chậm hơn.

Tôi không thể sống với thực tế này và được lập trình sửa lỗi cho điều này. Lựa chọn lịch sử đệ quy xảy ra trong SP dbo.prc_QueryHistory. Tôi đã thay đổi SP và bổ sung các chức năng sau:

  • (như tìm kiếm thông thường cho 256 changesets cuối cùng đệ quy)
  • sau đó kiểm tra changesets nếu một số trong số họ đại diện cho đổi tên hoạt động/di chuyển
  • nếu có thì đệ quy (trong một vòng lặp), hãy làm theo mỗi lần đổi tên/di chuyển đến ItemId cũ của nó và lặp lại bước này (trong trường hợp tệp/thư mục được đổi tên nhiều lần)
  • rồi tìm tất cả các thay đổi trước đó cho ItemIds trước đó (di chuyển/đổi tên thay đổi ItemId))
  • thêm các thay đổi mới được tìm thấy vào danh sách của changesets và cắt nó ở hàng 256

Hiệu ứng là lịch sử chậm hơn (đặc biệt nếu bạn làm điều đó trên thư mục gốc của cây thư mục sâu), nhưng vấn đề đã được sửa. Và tôi thích sống với một lịch sử chậm hơn so với lịch sử không đầy đủ.

Tôi có thể cung cấp cho bạn SP mà tôi đã viết, nhưng tôi không chắc liệu tôi có được phép xuất bản nó ở đây hay không, vì nó có chứa mã bảo vệ MS. (Và tất nhiên tôi không thể đảm bảo rằng việc sửa chữa sẽ kéo dài khi cập nhật hệ thống - tôi đã viết SP của tôi trên một SP3 TFS năm 2013..)

Cập nhật: Tôi hỏi MS cho phép xuất bản sửa chữa của tôi (liên kết 2 trong bài đăng của tôi)

+0

Bạn có thể mở một cuộc trò chuyện riêng tư sau khi bạn có đủ quyền: http://stackoverflow.com/help/privileges/chat-rooms – jessehouwing

+0

** CẢNH BÁO **: Điều này sẽ chính thức đưa TFS của bạn cài đặt vào trạng thái không được hỗ trợ. – jessehouwing

+0

Cách giải quyết di chuyển * có * hoạt động, đã sử dụng nó trước đây, mặc dù nó cũng chỉ định tài khoản được sử dụng để thực hiện di chuyển với tư cách là tác giả của các thay đổi. Về mặt cộng, thông tin đó không bị mất, vì nó được nối thêm vào phần mô tả các thay đổi. Vì vậy, nếu bạn có thể sống với điều đó, tôi muốn giới thiệu điều đó. – moarboilerplate

0

Tôi không nghĩ jessehouwing công trình sửa chữa cho các thư mục. Trong thực tế, nếu bạn sử dụng Source Control Explorer của VS 2012+, việc di chuyển các thư mục bảo tồn lịch sử tập tin (cho thấy đệ quy trong VS), nhưng không cho các thư mục. Lịch sử thư mục bằng phẳng.

Các giải pháp cho vấn đề này:

  1. Microsoft để sửa chữa lịch sử thư mục cách được hiển thị trong VS hoặc thêm Hiện History Recursive mục trình đơn ngữ cảnh.
  2. Di chuyển tất cả các thay đổi từ một thư mục này sang thư mục khác. Thật không may tôi vẫn không thể xác định một công cụ có khả năng làm điều này cho TFS 2013 hoặc VSO.
Các vấn đề liên quan