2009-04-24 29 views
12

Như tôi đã đề cập trong một số previous question, tôi đang tìm cách di chuyển kiểm soát nguồn của chúng tôi từ Perforce sang git.
Nhìn xung quanh, tôi đã tìm thấy git-p4 (bạn phải đào sâu hơn một chút, vì nó thậm chí không ở kho lưu trữ được chỉ bởi liên kết. Thực tế là khó tìm thấy hơn git-p4 script).Lấy toàn bộ lịch sử tập tin bằng git-p4

Tôi hiện đang chạy tập lệnh này và nó nhập phiên bản hiện tại của tệp trong kho lưu trữ git mới, nhưng tôi không thể quản lý lịch sử, bất kể tôi làm gì.

Đây là dòng lệnh hiện tại tôi sử dụng là:

P4CLIENT=my-p4-clientspec git-p4 clone --max-changes=1000 --use-client-spec //p4/path/to/be/imported/...

Vì vậy, câu hỏi thực sự là: nếu có ai đã quản lý để nhập kho P4, bao gồm lịch sử, tôi muốn biết làm thế nào bạn làm được rồi.

Cảm ơn!

joce.

Trả lời

19

Thử thêm "@all" vào đường dẫn tệp. Ví dụ, điều này tạo ra một repo đơn sửa đổi cho tôi:

python /usr/share/doc/git-core/contrib/fast-import/git-p4 clone --destination=master-pom \ 
    //depot/services/master-pom/trunk/... 

Lệnh này được nhập khẩu toàn bộ lịch sử:

python /usr/share/doc/git-core/contrib/fast-import/git-p4 clone --destination=master-pom \ 
    //depot/services/master-pom/trunk/[email protected] 

tôi đã cố gắng sử dụng các ví dụ git-p4 nhưng đã từ bỏ vì nhiều lý do và viết máy bơm nhập khẩu nhanh của riêng tôi. Nó đã được một thời gian trở lại, do đó, một số vấn đề có thể đã được cố định ngay bây giờ: nhưng git-p4 gặp rắc rối với các thay đổi lớn (chẳng hạn như việc tạo ra một chi nhánh ban đầu) (mặc dù sử dụng spec khách hàng có thể đã giúp, tôi không nghĩ rằng tôi đã thử nó) và các tập tin với "+ S" sửa đổi filetype (đó là Bad Và Evil, nhưng chúng tôi sử dụng để sử dụng nó). Và Python-fu của tôi đã không cho phép tôi khắc phục những vấn đề tôi có.

CHỈNH SỬA: vì ai đó đã yêu cầu, tại đây.

https://github.com/araqnid/p4utils có nhiều thứ p4, trong đó p4-git-xfer là bản sao p4-> git (một chiều). Nó có khá một vài vấn đề mặc dù, do chủ yếu là một công cụ tiện dụng cá nhân chứ không phải là một mảnh thực sự của cơ sở hạ tầng.

Bắt đầu:

p4-git-xfer clone -d $PWD/dictionary.git -n //depot/services/midoffice/dictionary/... \ 
    trunk 'release/*' 'branch/*' \ 
    trunk=master release/*=r* branch/*=dev/* 

sẽ sao chép rằng con đường chẳng đả với một "dictionary.git" trần. Các đối số đầu tiên sau đường dẫn cơ sở là "thông số kỹ thuật chi nhánh" cho trình sao chép biết nơi tìm nhánh trong cơ sở. Những cái sau (với ký hiệu '=') là "thông số kỹ thuật phản chiếu" cho trình tạo bản sao biết cách tạo các nhánh địa phương từ các nhánh đã nhập. Các chi tiết kỹ thuật chi nhánh gây ra "refs/điều khiển từ xa/p4/trunk", "refs/remotes/p4/release/1.0" vv được tạo ra. Các gương specs lực lượng "refs/heads/master" để nhân bản "refs/remotes/p4/trunk", "refs/heads/r1.0" để phản ánh "refs/remotes/p4/release/1.0" vv. như một cách để cho phép tôi chỉ chọn các nhánh cụ thể từ những nhánh đã được sao chép để được nhân giống với dòng vô tính.

Nó sẽ cố gắng phát hiện cách một chi nhánh được tạo ra, nhưng đó là một chút đoán với Perforce. Ngoài ra, nó không cố gắng thực hiện bất kỳ sự theo dõi chi nhánh nào cả: ngay cả những sự sáp nhập toàn bộ nhánh sẽ không được viết ra như vậy, xin lỗi.

Sau bản sao ban đầu, chạy p4-git-xfer fetch từ bên trong bản sao git sẽ thực hiện cập nhật gia tăng. Danh sách thay đổi nhãn hiệu nước cao được lấy từ marks/p4 trong repo git. Đây là một tệp đánh dấu tải nhanh, vì vậy nếu bạn thực hiện bất kỳ bước chân ưa thích nào như sử dụng bộ lọc-chi nhánh để viết lại mọi thứ, hãy cẩn thận bạn cũng có thể phải cập nhật điều này.

Nó không đẹp, và có một số vấn đề trung bình đến nghiêm trọng; Tôi sử dụng nó chủ yếu cho sự thuận tiện của riêng tôi, để cô lập bản thân mình khỏi các vấn đề của Perforce, không phải là một thành phần cơ sở hạ tầng hàng ngày. Đó là một chiều: Tôi thường sử dụng tập lệnh p4-am để áp dụng các bản vá được tạo bởi git format-patch. Đó là bản thân chỉ hoạt động chủ yếu, với nastiness chung phân tích, vấn đề với end-of-file dòng mới, những thay đổi nhị phân, vv

+0

Tập lệnh nhập p4 của bạn có công khai không? Nếu vậy, bạn có muốn chia sẻ nó không? – joce

0

Tôi cũng đang cố gắng tìm ra git-p4. Không có nhiều tài liệu ra khỏi đó, thật không may. Tôi muốn liên lạc với bạn vì chúng tôi có thể giúp đỡ lẫn nhau.

+0

Hey có Carl. Bạn có thể liên hệ với tôi tại jocelynlegault bằng gmail.com – joce

-1

Sự giúp đỡ git-p4 thực sự là khá tốt:

man git-p4 

Trên Ubuntu 12.04 nó là bao gồm trong gói git-man.

0
  1. cài đặt git bash (cli)
  2. cài đặt p4 cli
  3. cài đặt python 2.7
  4. get git-p4 kịch bản >>http://git.kernel.org/cgit/git/git.git/plain/git-p4.py
  5. đưa kịch bản này vào c/chương trình/files/git/bin/
  6. bây giờ mở git bash hoặc cmd check bằng cách gõ python done, p4 done, git done, git p4,
  7. tạo không gian làm việc của khách hàng có tên git.
  8. git p4 bản sao depo/path/@ tất cả repo/path

chỉ trong trường hợp công việc doesnt đường dẫn trong biến môi trường đặt ra cho python nếu python tạo ra vấn đề bộ P4CLIENT = git

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