Đây là điều mà tôi đã làm việc trong vài tuần qua và tắt. Nó vẫn đang phát triển, nhưng nó có thể hữu ích. Xin lưu ý tôi là nhân viên của Perforce.
Giới thiệu về Perforce cho người dùng Git
Có thể nói, việc chuyển từ Git sang Perforce hoặc từ Perforce sang Git là không tầm thường là một cách nói nhỏ. Đối với hai công cụ bề ngoài có thể làm cùng một việc, cách tiếp cận của họ không thể khác hơn. Bài viết ngắn này sẽ cố gắng giúp những người dùng Perforce mới đến từ Git hiểu được thế giới mới mà họ đang ở.
Một đường vòng ngắn trước khi chúng tôi lặn xuống; nếu bạn thích Git, bạn có thể sử dụng Git với Perforce khá tốt. Chúng tôi cung cấp một công cụ có tên Git Fusion để tạo các kho Git được giữ đồng bộ với máy chủ Perforce. Người Git và Perforce có thể sống hài hòa khi làm việc trên cùng một mã, hầu như không bị ảnh hưởng bởi sự lựa chọn kiểm soát phiên bản của đồng nghiệp. Git Fusions 13.3 có sẵn từ trang web Perforce . Nó không cần phải được cài đặt bởi quản trị viên Perforce, nhưng nếu bạn cài đặt nó, bạn sẽ thấy rằng tính năng cắt kho lưu trữ của nó có thể khá tiện dụng như một người dùng Git.
Nếu bạn không thể thuyết phục quản trị viên của mình cài đặt Git Fusion, thì chính Git đi kèm với ràng buộc Perforce có tên là Git-P4 cho phép bạn sử dụng Git để thay đổi và gửi tệp trong không gian làm việc của Perforce. Thông tin thêm về điều đó có thể được tìm thấy tại: https://git.wiki.kernel.org/index.php/GitP4
Vẫn ở đây? Tốt, hãy nhìn vào Perforce.
Một số thuật ngữ khác nhau để sắp xếp
Trước khi chúng tôi đi vào chi tiết, chúng tôi cần đề cập ngắn gọn về một số khác biệt về thuật ngữ giữa Git và Perforce.
Đầu tiên là thanh toán . Trong Git, đây là cách bạn lấy một bản sao của mã từ một nhánh nhất định vào khu vực làm việc của bạn. Trong Perforce, chúng tôi gọi đây là đồng bộ hóa từ dòng lệnh hoặc từ GUI P4V của chúng tôi "Nhận bản sửa đổi mới nhất". Perforce sử dụng tính năng kiểm tra từ từ P4V hoặc p4 edit
từ dòng lệnh để có nghĩa là bạn dự định thay đổi một tệp từ hệ thống kiểm soát phiên bản. Trong phần còn lại của tài liệu này, tôi sẽ sử dụng thanh toán theo nghĩa Perforce của từ này.
Thứ hai là Git commit so với Perforce nộp . Nơi bạn sẽ cam kết trong Git, bạn sẽ gửi trong Perforce. Do tất cả các hoạt động xảy ra đối với dịch vụ phiên bản Perforce được chia sẻ, Perforce không có tương đương git push
. Tương tự như vậy, chúng ta không có một pull
; lệnh đồng bộ từ phía trên đảm nhiệm việc nhận tệp cho chúng tôi. Không có khái niệm nào về việc gửi cục bộ thuần túy trong Perforce trừ khi bạn chọn sử dụng công cụ P4Sandbox của chúng tôi được mô tả ngắn gọn dưới đây.
Các khái niệm chính trong Perforce
Nếu tôi đơn giản hóa Perforce thành hai khái niệm chính, tôi sẽ tập trung vào kho và không gian làm việc. Kho chứa Perforce là kho lưu trữ các tệp nằm trong máy chủ Perforce. Một máy chủ Perforce có thể có bất kỳ số lượng kho và mỗi kho có thể chứa bất kỳ số lượng tệp nào. Thường thì bạn sẽ nghe người dùng Perforce sử dụng kho và máy chủ thay thế cho nhau, nhưng chúng khác nhau. Trang web Perforce có thể chọn có nhiều máy chủ, nhưng phổ biến nhất là tất cả các tệp nằm trong một máy chủ.
Không gian làm việc hoặc máy khách Perforce là một đối tượng trong hệ thống ánh xạ một tập hợp các tệp trong máy chủ Perforce đến một vị trí trên hệ thống tệp của người dùng. Mỗi người dùng có một không gian làm việc cho mỗi máy họ sử dụng và người dùng thường xuyên sẽ có nhiều không gian làm việc cho cùng một máy. Phần quan trọng nhất của không gian làm việc là ánh xạ hoặc khung nhìn không gian làm việc.
Khung nhìn không gian làm việc chỉ định tập hợp các tệp trong kho nên được ánh xạ tới máy cục bộ. Điều này rất quan trọng vì có nhiều khả năng bạn không muốn tất cả các tệp có sẵn trên máy chủ. Một khung nhìn không gian làm việc cho phép bạn chọn chỉ bộ mà bạn quan tâm. Điều quan trọng cần lưu ý là một không gian làm việc có thể ánh xạ nội dung từ nhiều kho, nhưng chỉ có thể ánh xạ nội dung từ một máy chủ.
Để so sánh Perforce với Git về vấn đề này, với Git, bạn chọn và chọn bộ repo Git mà bạn quan tâm. Mỗi repo thường có phạm vi chặt chẽ để chỉ chứa các tệp liên quan. Ưu điểm của việc này là không có cấu hình để thực hiện về phía bạn; bạn thực hiện một bản sao của những điều bạn quan tâm và bạn đã hoàn thành. Điều này đặc biệt tốt nếu bạn chỉ làm việc với một hoặc hai kho lưu trữ. Với Perforce, bạn cần dành một chút thời gian để chọn và chọn các đoạn mã bạn muốn.
Nhiều cửa hàng Perforce sử dụng các luồng có thể tự động tạo chế độ xem không gian làm việc hoặc họ tạo chế độ xem bằng cách sử dụng tập lệnh hoặc không gian làm việc mẫu. Tương tự nhiều người rời bỏ người dùng của họ để tạo ra không gian làm việc của họ. Một lợi thế của việc có thể ánh xạ một số mô-đun trong một không gian làm việc là bạn có thể dễ dàng sửa đổi nhiều mô-đun mã trong một lần đăng ký; bạn có thể được đảm bảo rằng bất kỳ ai có chế độ xem khách hàng tương tự đồng bộ hóa với đăng ký của bạn sẽ có tất cả mã ở trạng thái chính xác. Điều này cũng có thể dẫn đến mã phụ thuộc quá mức mặc dù; sự phân tách bắt buộc của Git có thể dẫn đến mô đun tốt hơn. Rất may, Perforce cũng có thể hỗ trợ mô đun nghiêm ngặt. Đó là tất cả một câu hỏi về cách bạn chọn sử dụng công cụ.
Tại sao không gian làm việc?
Tôi nghĩ rằng đến từ Git, thật dễ dàng để cảm thấy như toàn bộ khái niệm không gian làm việc là rắc rối hơn đáng kể. So với nhân bản một vài repo Git thì điều này chắc chắn là đúng. Không gian làm việc tỏa sáng và lý do Perforce vẫn hoạt động sau nhiều năm, đó là không gian làm việc là một cách tuyệt vời để giảm bớt hàng triệu dự án tệp cho các nhà phát triển trong khi vẫn dễ dàng xây dựng và phát hành để kết hợp tất cả các nguồn từ đó một nguồn có thẩm quyền. Không gian làm việc là một trong những lý do chính khiến Perforce có thể mở rộng quy mô như nó.
Không gian làm việc cũng tốt ở chỗ cách bố trí các tệp trong kho và bố cục trên máy của người dùng có thể thay đổi nếu cần. Nhiều công ty tổ chức kho của họ để phản ánh tổ chức của công ty để mọi người dễ dàng tìm thấy nội dung theo đơn vị kinh doanh hoặc dự án. Tuy nhiên, hệ thống xây dựng của họ không thể quan tâm ít hơn về hệ thống phân cấp này; không gian làm việc cho phép họ sắp xếp lại hệ thống phân cấp kho của mình theo bất kỳ cách nào có ý nghĩa với các công cụ của họ. Tôi cũng đã thấy điều này được sử dụng bởi các công ty đang sử dụng các hệ thống xây dựng cực kỳ không linh hoạt, yêu cầu mã phải có cấu hình rất cụ thể gây khó hiểu cho con người. Không gian làm việc cho phép các công ty này có một hệ thống phân cấp nguồn có thể điều hướng được con người trong khi các công cụ xây dựng của họ có được cấu trúc họ cần.
Không gian làm việc trong Perforce không chỉ được sử dụng để ánh xạ tập hợp các tệp mà người dùng muốn làm việc mà còn được máy chủ sử dụng để theo dõi chính xác các phiên bản của từng tệp mà người dùng đã đồng bộ hóa. Điều này cho phép hệ thống gửi tập hợp tệp chính xác cho người dùng khi đồng bộ hóa mà không phải quét các tệp để xem tệp nào cần được cập nhật. Với số lượng lớn dữ liệu, đây có thể là một chiến thắng hiệu suất khá lớn. Điều này cũng rất phổ biến trong các ngành có quy tắc kiểm toán rất nghiêm ngặt; Quản trị viên Perforce có thể dễ dàng theo dõi và ghi nhật ký nhà phát triển đã đồng bộ hóa tệp nào.
Để biết thêm thông tin về toàn bộ sức mạnh của không gian làm việc Perforce, hãy đọc Định cấu hình P4 .
Thanh toán rõ ràng so với Thanh toán ngầm
Một trong những thách thức lớn nhất đối với người dùng khi chuyển từ Git sang Perforce là khái niệm thanh toán rõ ràng. Nếu bạn đã quen với quy trình thay đổi tệp Git / SVN / CVS và sau đó báo cho hệ thống kiểm soát phiên bản tìm kiếm những gì bạn đã làm, thì đó có thể là một quá trình chuyển đổi cực kỳ đau đớn.
Tin vui là nếu bạn chọn như vậy, bạn có thể làm việc với quy trình làm việc theo kiểu Git trong Perforce. Trong Perforce, bạn có thể đặt tùy chọn "allwrite" trên không gian làm việc của mình. Điều này sẽ cho Perforce biết rằng tất cả các tệp nên được ghi vào đĩa với tập bit có thể ghi. Sau đó, bạn có thể thay đổi bất kỳ tệp nào bạn muốn mà không cần thông báo rõ ràng cho Perforce. Để Perforce điều hòa những thay đổi bạn đã thực hiện, bạn có thể chạy "trạng thái p4". Nó sẽ mở các tệp để thêm, chỉnh sửa và xóa nếu thích hợp. Khi làm việc theo cách này, bạn sẽ muốn sử dụng "cập nhật p4" thay vì "đồng bộ p4" để nhận bản sửa đổi mới từ máy chủ; "Cập nhật p4" kiểm tra các thay đổi trước khi đồng bộ hóa, vì vậy sẽ không ghi đè các thay đổi cục bộ của bạn nếu bạn chưa chạy "trạng thái p4".
Tại sao thanh toán rõ ràng?
Một câu hỏi tôi thường nhận được là "tại sao bạn muốn sử dụng thanh toán rõ ràng?" Ban đầu nó có thể là một quyết định thiết kế điên rồ, nhưng thanh toán rõ ràng có một số lợi ích mạnh mẽ.
Một lý do để sử dụng kiểm tra rõ ràng là nó loại bỏ nhu cầu quét các tệp để thay đổi nội dung. Mặc dù với các dự án nhỏ hơn tính toán băm cho mỗi tệp để tìm sự khác biệt khá rẻ, nhiều người dùng của chúng tôi có hàng triệu tệp trong không gian làm việc và / hoặc có các tệp có kích thước 100 megabyte, nếu không lớn hơn. Tính toán tất cả các giá trị băm trong những trường hợp đó là vô cùng tốn thời gian. Kiểm tra rõ ràng cho phép Perforce biết chính xác những tập tin mà nó cần để làm việc. Hành vi này là một trong những lý do Perforce rất phổ biến trong các ngành công nghiệp tệp lớn như ngành công nghiệp trò chơi, phim ảnh và phần cứng.
Một lợi ích khác là thanh toán rõ ràng cung cấp một hình thức giao tiếp không đồng bộ cho phép các nhà phát triển biết chung những gì đồng nghiệp của họ đang làm việc hoặc ít nhất là ở đâu. Nó có thể cho bạn biết rằng bạn có thể muốn tránh làm việc trong một khu vực nhất định để tránh xung đột không cần thiết hoặc có thể cảnh báo bạn về thực tế rằng một nhà phát triển mới trong nhóm đã đi sâu vào mã mà có lẽ họ không cần để được chỉnh sửa. Kinh nghiệm cá nhân của tôi là tôi có xu hướng làm việc trong Git hoặc sử dụng Perforce với allwrite cho các dự án mà tôi là người đóng góp duy nhất hoặc là người đóng góp không thường xuyên và kiểm tra rõ ràng khi tôi làm việc chặt chẽ với một nhóm. Rất may sự lựa chọn là của bạn.
Thanh toán rõ ràng cũng chơi độc đáo với khái niệm Perforce của những người thay đổi đang chờ xử lý. Thay đổi đang chờ xử lý là các nhóm mà bạn có thể đặt các tệp đang mở của mình để sắp xếp công việc. Trong Git, bạn có khả năng sử dụng các nhánh khác nhau làm thùng để tổ chức công việc. Chi nhánh rất tuyệt, nhưng đôi khi thật tuyệt khi có thể sắp xếp công việc của bạn thành nhiều thay đổi được đặt tên trước khi thực sự gửi đến máy chủ. Với mô hình Perforce có khả năng ánh xạ nhiều chi nhánh hoặc nhiều dự án vào một không gian làm việc, những người thay đổi đang chờ xử lý giúp dễ dàng giữ các thay đổi riêng biệt được tổ chức.
Nếu bạn sử dụng IDE để phát triển, chẳng hạn như Visual Studio hoặc Eclipse, tôi khuyên bạn nên cài đặt một plugin Perforce cho IDE của mình. Hầu hết các plugin IDE sẽ tự động kiểm tra các tệp khi bạn bắt đầu chỉnh sửa chúng, giúp bạn không phải tự mình kiểm tra.
Thay thế lực lượng cho các tính năng Git
git stash
==> p4 shelve
- git phân nhánh cục bộ ==> hoặc kệ Perforce hoặc nhánh nhiệm vụ
git blame
==> p4 annotate
hoặc Perforce Timelapse View từ GUI
Làm việc bị ngắt kết nối
Có hai tùy chọn để làm việc bị ngắt kết nối khỏi dịch vụ phiên bản Perforce (đó là thuật ngữ ưa thích của chúng tôi cho máy chủ Perforce).
1) Sử dụng P4Sandbox để có phiên bản cục bộ đầy đủ và phân nhánh cục bộ
2) Chỉnh sửa tệp theo ý muốn và sử dụng 'trạng thái p4' để cho Perforce biết bạn đã làm gì
Với cả hai tùy chọn trên, bạn có thể chọn sử dụng cài đặt "allwrite" trong không gian làm việc của mình để không phải mở khóa các tệp. Khi làm việc ở chế độ này, bạn sẽ muốn sử dụng lệnh "cập nhật p4" để đồng bộ hóa các tệp mới thay vì "đồng bộ hóa p4". "Cập nhật p4" sẽ kiểm tra các tệp để thay đổi trước khi đồng bộ hóa chúng.
Bắt đầu nhanh
Tất cả các ví dụ sau sẽ thông qua dòng lệnh.
1) Định cấu hình kết nối của bạn với Perforce
export P4USER=matt
export P4CLIENT=demo-workspace
export P4PORT=perforce:1666
Bạn có thể dán các cài đặt này trong tệp cấu hình shell của mình, sử dụng p4 set
để lưu chúng trên Windows và OS X hoặc sử dụng tệp cấu hình Perforce.
1) Tạo không gian làm việc
p4 workspace
# set your root to where your files should live:
Root: /Users/matt/work
# in the resulting editor change your view to map the depot files you care about
//depot/main/... //demo-workspace/main/...
//depot/dev/... //demo-workspace/dev/...
2) Lấy các tập tin từ máy chủ
cd /Users/matt/work
p4 sync
3) Kiểm tra tệp bạn muốn làm việc và sửa đổi nó
p4 edit main/foo;
echo cake >> main/foo
4) Gửi nó đến máy chủ
p4 submit -d "A trivial edit"
5) Chạy p4 help simple
để xem các lệnh cơ bản mà bạn sẽ cần để làm việc với Perforce.