2013-03-08 4 views
7

tôi đã làm:Làm thế nào để nhân bản chi nhánh với git-p4?

git p4 clone //depot/path/to/project/trunk/@all project 

để tạo ra các chi nhánh của masterproject. Bây giờ tôi muốn sao chép //depot/path/to/project/release đến chi nhánh release của project. Làm thế nào là thực hiện?

CẬP NHẬT: Sử dụng --detect-branches cũng không hoạt động. Nó báo cáo rằng nó đang cập nhật hai chi nhánh (khi thực sự có ba chi nhánh) nhưng git branch chỉ báo cáo tổng thể tồn tại.

Trả lời

0

Tôi tin rằng "phát hiện các nhánh" dựa vào bạn có ánh xạ nhánh có cùng tên với đường dẫn nhánh trong kho của bạn. Nếu không phải như vậy, bạn có thể cần phải sử dụng suggested method xác định giá trị cấu hình git-p4.branchList trong repo git trống trước khi chạy lệnh clone git-p4.

+0

Ah, điều này có ý nghĩa. Tôi đã tự hỏi làm thế nào phát hiện chi nhánh 'ma thuật' làm việc. Tôi sẽ thử. Cảm ơn. –

+0

Điều này vẫn không hoạt động đối với tôi. Tôi nghi ngờ việc sáp nhập đã đi theo cả hai hướng trên ít nhất một số chi nhánh của chúng tôi và nó ném một cờ lê vào các tác phẩm của git-p4. –

+0

Nó đã làm việc cho tôi trong quá khứ trên một repo rất lớn, với một người nào đó của hầu hết các ngành khó hiểu/sáp nhập tôi từng thấy. Kể từ khi git-p4 được viết bằng python, nó thực sự không khó để gỡ lỗi. – cmcginty

8

Dưới đây là các ghi chú thiết lập của tôi khi tôi đang sử dụng git-p4. Nó có thể hữu ích:

  • Tải xuống p4 linux client. Lưu trữ các tập tin trong ~/bin hoặc /usr/local/binchmod +x

  • Cài đặt git-p4 như là người chủ

    chmod 755 /usr/share/doc/git/contrib/fast-import/git-p4 
    ln -s /usr/share/doc/git/contrib/fast-import/git-p4 /usr/local/bin 
    
  • Xác định globals Git cho git-p4

    git config --global alias.p4 '!git-p4' 
    git config --global git-p4.detectRenames true 
    git config --global git-p4.detectCopies true 
    
  • Set định nghĩa cho trực tiếp 'p4' cách sử dụng

    export P4PORT=SERVER_NAME:PORT_NUMBER 
    
  • credentials Set đăng nhập

    export P4USER=USER_NAME 
    export P4PASSWD=PASSWORD 
    
  • Chọn cành chẳng đả sử dụng P4 'khách hàng'

    Run lệnh 'p4 khách hàng, và thêm chỉ đường dẫn/chi nhánh bạn đang quan tâm. Nếu bạn muốn đặt tên cho không gian làm việc của máy khách, bạn có thể thêm một đối số CLIENT_NAME tùy chọn vào cuối lệnh. Điều này sẽ cho phép bạn sử dụng các định nghĩa ứng dụng khách khác nhau trên cùng một máy.

    $ p4 client [CLIENT_NAME] 
    
    View: 
    //depot/main... //CLIENT_NAME/main... 
    //depot/patch... //CLIENT_NAME/patch... 
    //depot/dev... //CLIENT_NAME/dev... 
    
  • Clone kho

    • Simple nhập khẩu

      git p4 clone --use-client-spec --detect-branches //[email protected] GIT_DIR 
      
    • nâng cao nhập khẩu

      git init PROJ; cd PROJ/ 
      git config git-p4.branchList main:patch 
      git config --add git-p4.branchList main:dev 
      git p4 clone --use-client-spec //[email protected] . 
      
  • Gửi Changes Về Perforce

    Để gửi thay đổi cực chẳng đả, nó đòi hỏi một không gian làm việc của khách hàng, tách rời khỏi cây làm việc git.Chúng tôi khuyên bạn không gian làm việc là trên cùng một hệ thống tệp mà thư mục làm việc của Perforce git của bạn.

    Bên cạnh đó, một tham chiếu đến con đường không gian làm việc được lưu trữ trên máy chủ cực chẳng đả, và sẽ được sử dụng trong lệnh p4 submit.

    Bước đầu tiên là tạo không gian làm việc của máy khách cục bộ. CLIENT_NAME là một đối số tùy chọn. Nếu bạn không định nghĩa nó, p4 sẽ sử dụng tên máy chủ của bạn.

    p4 client [CLIENT_NAME] 
    

    Bạn sẽ được chuyển đến trình chỉnh sửa tệp trước khi hoàn tất lệnh p4. Điều này cho phép bạn thay đổi bất kỳ cài đặt ứng dụng nào trước khi chúng được gửi đến máy chủ . Bạn phải thay đổi giá trị Root thành thư mục mới bên ngoài cây git của bạn (ví dụ: ../p4-working) Ngoài ra, hãy xác minh các giá trị OwnerClient trước khi thoát. Các giá trị này lấy từ môi trường của bạn và không thể thay đổi trong trình chỉnh sửa.

    p4 clients | grep USERNAME 
    

    Nếu bạn không sử dụng tên của khách hàng mặc định, nó phải được quy định tại địa phương git config của bạn:

    git config git-p4.client CLIENT_NAME 
    

    Khi bạn đã sẵn sàng để đẩy những thay đổi mã của bạn, sử dụng các lệnh:

    git p4 rebase 
    git p4 submit 
    

    Bạn có thể loại bỏ các khách hàng từ các sever khi không còn được sử dụng:

    p4 client -d CLIENT_NAME 
    
+1

Bạn đang thiếu --thêm vào phần 'git config --add git-p4.branchList chính thứ hai: dev' –