2008-11-18 24 views
10

Chúng tôi đang làm việc trên thiết kế và chúng tôi đã tạo bộ khung của các lớp trong nhánh chính của chúng tôi. Bây giờ, chúng ta đang bắt đầu viết mã, và cho rằng chúng ta có một nhánh mới. Vì vậy, nó sẽ được tốt đẹp nếu tôi có thể di chuyển tất cả các tập tin mới trong nhánh chính vào chi nhánh mới. Tuy nhiên, tôi chưa thể kiểm tra chúng. Vì vậy, có thể tích hợp danh sách thay đổi đã kiểm tra không? Cảm ơn.Tôi có thể tích hợp các tệp đã kiểm tra vào một nhánh khác trên mỗi lực lượng

Trả lời

0

Tôi chưa bao giờ tìm được cách để thực hiện điều đó trong perforce, nhưng ít nhất bạn cũng có thể tự động hóa nó một phần.

Thông thường khi tôi phải làm điều gì đó như vậy, tôi sẽ kiểm tra các tệp trong nhánh mà tôi muốn di chuyển, sau đó sử dụng WinMerge để phân biệt các nhánh và sao chép các thay đổi. Khi đã xong, bạn có thể hoàn nguyên các thay đổi trong nhánh ban đầu và kiểm tra chúng trong nhánh mới.

Đây không phải là giải pháp tốt nhất (không tự động thanh toán/thêm/xóa tệp trên nhánh mới), nhưng là phương pháp nhanh nhất mà tôi đã đưa ra.

-1

Câu trả lời dễ dàng là - không bạn không thể. Một sự xem xét nhanh chóng của tài liệu Perforce đã không đưa ra một trích dẫn sẵn sàng cho điều này, thật không may, nhưng theo kinh nghiệm của tôi, bất kỳ nỗ lực nào để kéo tấm thảm ra khỏi máy chủ Perforce sẽ dẫn đến những thay đổi của bạn bị mất. người cắm trại.

Sao lưu, tạo vùng làm việc mới trên nhánh mới và áp dụng lại các thay đổi của bạn, có thể sử dụng chiến lược khác biệt/hợp nhất được nêu trong câu trả lời của Herms.

+0

Xem liên kết ở trên về quá trình phân nhánh đang tiến hành. –

0

Không thực sự.

Bạn có thể chỉ cần mở tệp để chỉnh sửa trong nhánh mới và sao chép thủ công các tệp đã thay đổi từ vùng làm việc của nhánh chính sang không gian làm việc của nhánh mới. Đây có lẽ là cách dễ nhất nếu nó chỉ là một vài tập tin.

Here là một vài tập lệnh có thể hữu ích nếu có nhiều tệp hơn. Ví dụ: với tập lệnh P4Shelf bạn có thể tạo bản lưu trữ của tất cả các tệp đã thay đổi và sau đó tự động mở chúng trong bất kỳ chi nhánh nào với các thay đổi được khôi phục.

Ngoài ra, hãy xem một số other nifty scripts cho Perforce của Jim Tilander.

10

Trang web hỗ trợ Perforce giải thích cách thực hiện việc này: Perforce Knowledge Base: Branching work in progress. Nó sẽ đẹp hơn nếu nó là một bước duy nhất mà không yêu cầu chạy tám lệnh khác nhau.

+0

Đây là câu trả lời đúng - thực hiện nó tải bản thân mình và rất dễ dàng. –

+0

@ user38703: Vui lòng đánh dấu nó là câu trả lời đúng nếu đúng. –

+2

Tôi ngạc nhiên rằng git bị lúng túng vì "khó sử dụng" khi p4 tương đương với "git rebase" là 15 lệnh. – RJFalconer

6

Kể từ khi phát hành 2013.1, cách tiến hành chi nhánh đang tiến hành là shelve công việc và unshelve nó trên nhánh. Cụ thể:

  1. xiên thay đổi nổi bật của bạn:

    $ p4 shelve ... 
    Change 182535 created with 10 open file(s). 
    Shelving files for change 182535. 
    edit //info.ravenbrook.com/project/mps/master/code/arenavm.c#26 
    # etc. 
    
  2. Unshelve chúng trên các chi nhánh (sử dụng tùy chọn -b, mà bản đồ tên tập tin thông qua một đặc điểm kỹ thuật chi nhánh):

    $ p4 unshelve -b mps/branch/2013-06-05/diag -s 182535 
    ... //info.ravenbrook.com/project/mps/branch/2013-06-05/diag/code/arenavm.c - must resolve //info.ravenbrook.com/project/mps/master/code/[email protected]=182535 before submitting 
    # etc. 
    
  3. Giải quyết mọi sự hợp nhất được tạo ra từ unshelve, sử dụng p4 resolve -as để nhanh chóng thực hiện các thao tác "an toàn" và sau đó là doi ng phần còn lại với p4 resolve như bình thường.

    $ p4 resolve -as 
    //gdr-peewit/info.ravenbrook.com/project/mps/branch/2013-06-05/diag/code/arenavm.c - copy from //info.ravenbrook.com/project/mps/master/code/arenavm.c 
    # etc. 
    $ p4 resolve 
    No file(s) to resolve. 
    

(Ví dụ đầu ra là từ một trường hợp sử dụng thực tế tôi chạy ngay bây giờ.)

0

Để rephrase Gareth Rees' câu trả lời ở trên trong thuật ngữ đơn giản,

p4 unshelve -b target_branchspec -s changelist 

:)

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