2012-11-30 52 views
5

Nếu tôi có hai luồng (được gọi là Stream1, Stream2) của sự phát triển và tôi muốn hợp nhất hai luồng này thành một luồng.Cách hợp nhất hai hoặc nhiều luồng

này hiện là cách tôi làm điều đó:

  1. Tạo một Stream mới - Stream3. Dòng 3 sẽ chứa một hợp nhất của Stream1 & Stream2
  2. Tạo một repositroy workspace mới (gọi tắt là workspace1) từ Stream3
  3. Set dòng mục tiêu của workspace1 để Stream1
  4. Within 'Pending Changes' tất cả các bộ biến đổi mà đã có sẵn trong Stream1, nhưng không phải trong Stream2 bây giờ sẽ xuất hiện dưới dạng tập hợp thay đổi có thể được phân phối tới Stream3

Thực tiễn tốt nhất này là hợp nhất 2 luồng hoặc có phương pháp thanh lịch hơn không?

Trả lời

11

Tạo luồng mới ??? Không cần.

Khi bạn mở một không gian làm việc repo, bạn có một phần được gọi là "Mục tiêu luồng", trong đó có chứa trong Dòng của bạn (được đặc trưng là "Mặc định").

Thêm vào nguồn Luồng (luồng mà bạn muốn hợp nhất), đặt nó là "hiện tại" và bạn sẽ thấy trong chế độ xem "Thay đổi đang chờ xử lý" phần "Đến" với tất cả các bộ thay đổi hoặc các đường cơ sở đến từ luồng nguồn đó.

Ý tưởng là để bạn chấp nhận các thay đổi đó, tải chúng trong không gian làm việc cục bộ của bạn và kiểm tra chúng (biên dịch và thử nghiệm), sau đó cung cấp chúng trở lại luồng mặc định của bạn.

Giai đoạn "Chấp nhận" là nơi hợp nhất xảy ra (tự động hoặc theo cách thủ công nếu xung đột).
Như đã đề cập trong this thread:

Thuật toán hợp nhất trong RTC là logic giống như được tìm thấy trong ClearCase, ví dụ, cho một cấu hình (suối, không gian làm việc) mà lựa chọn một phiên bản khác nhau của một tập tin nào đó, tìm ra tổ tiên chung của hai phiên bản, và sau đó thực hiện hợp nhất 3 chiều.
Thay đổi "mục tiêu luồng" của không gian làm việc chỉ là cách RTC cho phép bạn chỉ định nhánh (luồng) nào bạn muốn hợp nhất vào không gian làm việc của mình (cleartool findmerge mang lại cho bạn sự linh hoạt tương tự).
Lưu ý rằng ClearCase và RTC sử dụng một thuật toán tổ tiên chung khác.

Bước cuối cùng giả sử bạn quay lại mục "Mục tiêu luồng" và đặt trở lại là "luồng hiện tại" là luồng mặc định.

tôi thích công việc này với trang này:

merge

Đây Brent sẽ thiết lập như hiện nay điểm đến dòng để cung cấp các kết quả của sự hợp nhất. Đó là một quy trình làm việc thay thế, cũng được mô tả trong "How to keep your streams flowing smoothly in Rational Team Concert 3.0.1".

+0

và sau đó tạo luồng mới từ không gian làm việc của kho lưu trữ? Lý do tôi tạo luồng mới là tôi không muốn các bộ thay đổi từ Stream1 trong Luồng 2 (hoặc Stream2 trong Luồng 1).Vì vậy, luồng mới được tạo sẽ chứa hợp nhất. Đây có phải là một thực hành không tốt? –

+2

@ user470184 "thực hành kém": có. Bạn * không * tạo luồng mới khi bạn hợp nhất từ ​​'Luồng A' thành 'Luồng B'. 'Stream B' là * có nghĩa là * để nhận được những thay đổi đó. Đó là những gì hợp nhất là tất cả về. Bạn chỉ cần tạo một luồng mới nếu hợp nhất quá phức tạp mà bạn muốn cộng tác với một vài nhà phát triển để hoàn thành nó, trước khi hợp nhất 'Stream3' thành' Stream2'. Tránh điều đó nếu có thể. – VonC

Các vấn đề liên quan