2010-04-29 35 views
9

kho p4 của tôi có một cấu trúc tương tự như:Làm thế nào để có được - chi nhánh-để làm việc với git-p4?

//depot/project/branch1 
//depot/project/branch2 
//depot/project/branch3 
... etc 

Tuy nhiên, khi tôi sử dụng git-p4 nhân bản "dự án", tất cả 3 chi nhánh không được coi là chi nhánh và tất cả được nhân bản vô tính vào chi nhánh tổng thể duy nhất.

Đây là cách tôi gọi git-p4:

git-p4 clone --detect-branches //depot/project 

tôi đã mong git-p4 để tạo ra một cơ sở dữ liệu git cho "project" với ba chi nhánh, và thư mục gốc của dự án sẽ được ánh xạ tới phần đường dẫn sau tên chi nhánh (ví dụ: nếu //depot/project/branch1 có thư mục con được gọi là "lib" (//depot/project/branch1/lib) thì hệ thống tệp cục bộ của tôi phải giống như /git_project/lib với 3 nhánh git).

Là những gì tôi đang mong đợi sai? Tôi có gọi git-p4 không chính xác không?

+0

Bạn đã từng có may mắn chưa, Michael? Tôi đang gặp rất nhiều rắc rối với điều này, thậm chí sử dụng các thông số kỹ thuật chi nhánh như được mô tả trên nhiều trang web. –

Trả lời

1

Nếu bạn nhìn vào git-p4 code (còn originally here), bạn sẽ thấy:

if self.detectBranches: 
    branches = self.splitFilesIntoBranches(description) 
    for branch in branches.keys(): 
    ## HACK --hwn 
    branchPrefix = self.depotPaths[0] + branch + "/" 

với splitFilesIntoBranches khám phá repo p4 cho chi nhánh.

Vì vậy, có thể git-p4 clone //depot/[email protected] --detect-branches sẽ ổn (với @all như trong số SO answer và tùy chọn --detect-branches sau đường dẫn này)?

Điều đó đang được nói, nếu tập lệnh không đủ thông minh để quản lý, có thể là giải pháp đơn giản hơn là chạy 3 lần, mỗi lần một nhánh và nhập kết quả vào một repo Git.

+0

Tôi đã dùng thử "@all". Tuy nhiên, có lẽ nó không hoạt động vì dấu ngoặc đơn trong các phần khác của kho? Chi nhánh được đề cập ở đầu ra bên dưới không nằm trong một phần của kho tôi đang cố gắng sao chép (nó cao hơn).(Tôi đã che giấu tên dự án và tên người dùng bằng "DỰ ÁN" và "NGƯỜI DÙNG") –

+0

Kho lưu trữ Git trống trong /cygdrive/c/projects/PROJECT/.git/ /bin/sh: -c: dòng 0: lỗi cú pháp gần mã thông báo không mong muốn '(' /bin/sh: -c: dòng 0:' p4 -G branch -o dev_OtherProject (ASP.Net) _USER' Nhập bản sửa đổi 181332 (0%) Nhập chi nhánh mới DỰ ÁN/Chính/DotNet Tiếp tục với sự thay đổi 181.332 gây tử vong: tên ref không hợp lệ hoặc biểu SHA1: refs/điều khiển từ xa/p4/DỰ ÁN/giao hàng/DotNet nhanh nhập khẩu: bán phá giá báo cáo tai nạn để .git/fast_import_crash_1832 sẽ không chạy nó 3 lần, một cho mỗi chi nhánh, tạo ra 3 kho git? Tôi nghĩ rằng clit git-p4 luôn tạo một kho lưu trữ mới. –

0

Tôi vừa thực hiện một lỗi liên quan với --detect-branches. Các kịch bản thực hiện một vài điều:

  1. phát hiện các tên chi nhánh sử dụng dữ liệu p4
  2. tạo ra một bản đồ của phụ huynh của từng ngành
  3. bản đồ các tập tin vào một chi nhánh cụ thể
  4. loại bỏ các tiền tố chi nhánh trước cam kết vào git

Bạn sẽ phải tuân theo mã để đảm bảo từng bước được thực hiện chính xác. Sử dụng pdb để thực hiện công việc này đủ tốt.

Bước 1 và 2 được thực hiện trong P4Sync.getBranchMapping

Bước 3 được thực hiện trong P4Sync.splitFilesIntoBranches

Đối với bước 4. này được thực hiện với P4Sync.stripRepoPath. Đặt điểm ngắt ở đó và bạn có thể xem các nhánh đã được phát hiện chưa và các tệp đang được đổi tên đúng cách.

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