Tôi có thể chuyển sang một nhánh khác trong tfs 2008 không?


105

Giả sử rằng một nhà phát triển nào đó trong nhóm của tôi đã bỏ qua những thay đổi của anh ấy mà anh ấy đã làm ở chi nhánh A. Và tôi đang làm việc ở chi nhánh B. Tôi có thể bỏ qua những thay đổi của anh ấy ở chi nhánh B không? (Bằng GUI hoặc dấu nhắc lệnh)


Câu trả lời:


129

Các Visual Studio Power Tools sẽ cho phép bạn làm điều này.

C:\src\2\Merlin\Main>tfpt unshelve /?
tfpt unshelve - Unshelve into workspace with pending changes

Allows a shelveset to be unshelved into a workspace with pending changes.
Merges content between local and shelved changes. Allows migration of shelved
changes from one branch into another by rewriting server paths.

Usage: tfpt unshelve [shelvesetname[;username]] [/nobackup]
                     [/migrate /source:serverpath /target:serverpath]

 shelvesetname          The name of the shelveset to unshelve
 /nobackup              Skip the creation of a backup shelveset
 /migrate               Rewrite the server paths of the shelved items
                        (for example to unshelve into another branch)
 /source:serverpath     Source location for path rewrite (supply with /migrate)
 /target:serverpath     Target location for path rewrite (supply with /migrate)
 /nobackup              Skip the creation of a backup shelveset

Ví dụ: để hợp nhất một tập hợp giá đỡ được gọi là "Tên tập hợp giá đỡ" được tạo trên Branch1 với Branch2, hãy sử dụng điều này:

>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"

2
Ooohhh ... Curt, tôi nghĩ bạn vừa làm nên ngày của tôi. Tôi sẽ phải thử điều đó sau.
Herms 23/09/08

Bạn lấy dụng cụ điện từ đâu?
Guy

3
Đúng vậy, các công cụ điện NÊN cho phép bạn làm điều này, nhưng tiếc là quá trình hợp nhất mỗi lần như vậy lại bị sai một cách khủng khiếp nên nó sẽ trở nên vô dụng.
Tim Booker

Sự hợp nhất không tệ lắm. Tôi nhận thấy rằng Auto Merge hoạt động trong 90% trường hợp.
Justin Rudd

2
Chỉ cần thử nó. Tôi đã di chuyển nhiều tệp trong bộ kệ và rất tiếc điều này dường như không hoạt động tốt. Bạn cần phải "di chuyển" tất cả các tệp này theo cách thủ công (cũng không có nhiều lựa chọn). Và sau đó chúng được thêm dưới dạng tệp mới vào không gian làm việc. Tôi không thể sử dụng nó, vì tôi không thể hợp nhất nó nữa.
Stefan Steinegger

34

Giải pháp thay thế cho tfpt tránh phải hợp nhất từng tệp theo cách thủ công

Vấn đề với công cụ điện tfs là bạn đang thực hiện 'hợp nhất vô căn cứ', vì vậy phải xác nhận mọi tệp . Tôi có một bộ giá trị hơn 800 tệp và tôi không bao giờ tin tưởng vào nút 'tự động hợp nhất' và không muốn xem qua từng tệp một - vì vậy tôi phải tìm cách khác!

  • Tải xuống và cài đặt TFS Shelveset Sidekick .
  • Công cụ xuất hiện trong 'Công cụ' trong VS2010
  • Chạy công cụ 'Shelveset Sidekick', nhấp vào Tìm kiếm để hiển thị các bộ giá
  • Nhấp chuột phải vào bộ kệ của bạn và chọn 'Bộ kệ xuất'
  • Lưu vào một vị trí trống chẳng hạn như C:\temp\shelveset-name
  • Bây giờ có một cấu trúc thư mục hoàn chỉnh chứa JUST các tệp mới

(Lưu ý: Không có thanh tiến trình khi xuất - vì vậy nếu bạn có một tập hợp kệ lớn cần nhiều thời gian để xuất, bạn chỉ cần kiểm tra trong Windows Explorer (Tệp> Thuộc tính> Kích thước) xem các tệp vẫn đang xuất hiện nếu bạn nghĩ rằng nó bị đóng băng).

Bây giờ bạn chỉ cần sao chép chúng sang nhánh mới bằng Windows Explorer.

Điều này đã làm việc cho tôi:

  • Kiểm tra toàn bộ giải pháp trước (trong nhánh mới)
  • Đóng giải pháp đó
  • Đưa TFS ngoại tuyến từ bên trong VS ( Công cụ để thực hiện việc này ) - xem bên dưới để biết lý do tại sao điều này lại quan trọng ...
  • Sao chép tệp trong Windows Explorer. Cấu trúc thư mục trong c:\temp\shelveset-namesẽ phải được đổi tên để tương ứng với nhánh mới. Mẹo: Hãy chắc chắn rằng bạn sao chép đến đúng nơi !!!
  • Mang VS trực tuyến
  • Nó sẽ tìm thấy tất cả các thay đổi và thêm các tệp mới
  • Nếu nó yêu cầu bạn ràng buộc kiểm soát nguồn, hãy đảm bảo xác minh đường dẫn là chính xác cho nhánh mới.
  • Kiểm tra - và sau đó kiểm tra các tệp mới

Quan trọng: Tôi nhận thấy rằng nếu trước tiên bạn không sử dụng TFS ngoại tuyến thì bạn sẽ kết thúc với bất kỳ tệp mới nào (từ bộ thay đổi chưa có giá của bạn) hiển thị mà không có dấu kiểm nhỏ màu đỏ và bạn sẽ phải loại trừ và bao gồm chúng lại để có được họ để thêm. Nếu ai đó có giải pháp thay thế cho vấn đề này, tôi rất muốn biết - làm mới dường như không hiệu quả.


Phương pháp này dễ dàng hơn cho các bộ kệ lớn hơn và là phương pháp tôi đã làm theo. Cảm ơn!
Ani

Phương pháp này thực sự tốt hơn là cho shelvesets lớn
Aamir

Vâng, bạn có thể thoát khỏi mà không cần lấy TFS ngoại tuyến. Nhưng tôi không chắc nó là giá trị nó. Những gì tôi đã làm là chạy hành động So sánh - trong Trình khám phá điều khiển nguồn từ menu ngữ cảnh mở trên thư mục có liên quan. Người ta có thể lọc đầu ra để chỉ hiển thị các mục khác nhau. Sau đó, nó cho phép thực hiện nhiều lựa chọn trên chúng và Kiểm tra tất cả chúng cùng một lúc. Nhưng tôi đoán lấy TFS ngoại tuyến nhanh hơn và đơn giản hơn thế.
đánh dấu

Thật không may, điều này không hiệu quả với tôi khi tôi đã "thêm" các thay đổi trong bộ kệ. Tôi gặp lỗi "Không truy xuất được tệp đã xếp. Cần phải có thay đổi đang chờ xử lý trên tệp".
John Saunders

@JohnSaunders ý bạn là một bộ kệ với bất kỳ bổ sung nào hoặc bổ sung độc quyền? Tôi đã không cần phải làm điều này trong nhiều năm :)
Simon_Weaver

1

Thông tin về giá bao gồm đường dẫn cụ thể mà nó đi đến. Thật không may, tôi không biết bất kỳ cách tự động nào để chuyển đến bất kỳ vị trí nào khác với vị trí mà nó đã được xếp vào. Những lần tôi muốn làm điều này, tôi phải kiểm tra các tệp tương đương trong nhánh mới, tách khỏi nhánh cũ, sau đó sao chép thủ công các tệp đó.

CHỈNH SỬA: Chà, tôi đoán tôi đã làm việc đó một cách khó khăn. Tôi sẽ phải thử giải pháp của Curt. :)


0

Tôi đã dành rất nhiều thời gian để hoàn thành việc này và tôi có một số vấn đề cần khắc phục. Có thể xảy ra nhưng ở đây có một số vấn đề và một số quy tắc cần tuân theo để giải quyết các vấn đề này

Lỗi:

không thể xác định không gian làm việc

Vấn đề cụ thể này đã được giải quyết bằng cách chạy lệnh từ nguồn thư mục gốc chi nhánh. Điều này trái với một số câu trả lời trên SO nơi họ nói sử dụng nhánh "đích" - không, hãy sử dụng "nguồn":

cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"

Vấn đề thứ hai xuất hiện sau đó. Có vẻ như nó không thể kết nối với máy chủ TFS. Những gì tôi nhận ra, tôi đã cài đặt nhiều VS và kết nối với các máy chủ TFS khác nhau. Tôi đang sử dụng VS12 và tôi có không gian làm việc và kết nối máy chủ. Nhưng tôi không nhận ra rằng kết nối tương tự cần được nhân rộng trong VS13 để TFPT2013 hoạt động. Nó kết nối với cùng một máy chủ và không gian làm việc.

Tôi cũng đã thử làm điều đó bằng TFPT2015 nhưng tôi đã cài đặt nó và nó không cài đặt được TFPT.exe do đó nó vô dụng. Vì vậy, tôi đã thử từ TFPT2013 đến TFS2015 và nó hoạt động cho lệnh cụ thể này. Tôi tự hỏi, tại sao không, nếu VS12 / 13 hoạt động tốt với TFS2015?

Để tóm tắt

  • Sử dụng CMD hoặc DevCMD - không thành vấn đề
  • chạy lệnh từ nguồn thư mục gốc chi nhánh
  • xác minh kết nối Máy chủ Team Explorer cho VS cụ thể
  • TF Power Tools 2013 hoạt động dựa trên TFS v15, ít nhất tùy chọn di chuyển hoạt động

0

Các bước sau có thể được sử dụng cho các bộ kệ có kích thước nhỏ (~ 20 tệp hoặc ít hơn).

  1. Trên bộ kệ và các nhánh mục tiêu, hãy bắt đầu bằng cách kiểm tra hoặc khôi phục lại tất cả các bản cập nhật đang chờ xử lý.
  2. Trên nhánh của bộ kệ, tách các tệp khỏi bộ giá được áp dụng.
  3. Trên nhánh mục tiêu, hãy kiểm tra bất kỳ tệp nào hiện có trong bộ giá chưa lưu.
  4. So sánh các tệp chưa được lưu trữ trên nhánh của bộ kệ với các tệp trên nhánh mục tiêu để xác định các tệp yêu cầu cập nhật hợp nhất (nếu có).
  5. Nếu cần, hãy thực hiện cập nhật hợp nhất theo cách thủ công cho các tệp áp dụng của bước trước và lưu các tệp này trong không gian làm việc nhánh đích.
  6. Sao chép các tệp tập hợp kệ khác từ không gian làm việc nhánh của bộ kệ vào không gian làm việc của nhánh mục tiêu.
  7. So sánh các tệp cập nhật mới trong không gian làm việc nhánh mục tiêu với các tệp đã đăng ký. Thực hiện bất kỳ chỉnh sửa nào nếu cần.
  8. Kiểm tra các tệp cập nhật mới trên nhánh mục tiêu.
  9. Khôi phục các tệp chưa được lưu trữ trên nhánh của bộ kệ.
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.