2010-03-15 70 views
27

Khi tôi muốn lấy mã nguồn Android, tôi biết rằng tôi phải sử dụng "repo". Vậy repo là gì? Tại sao họ sử dụng repo và không chỉ sử dụng GIT ?, và có một GUI cho repo cho phép tôi tạm dừng/tiếp tục đồng bộ, bởi vì mỗi lần tôi bị ngắt kết nối đôi khi có vẻ như repo bắt đầu đồng bộ ngay từ đầu!Repo là gì và tại sao Google sử dụng?

Trả lời

19

Repo và git - những gì họ đang có, những gì họ đang cho - được giải thích trên source.android.com

Để làm việc với mã Android, bạn sẽ cần phải sử dụng cả hai Git và Repo.

Git là hệ thống kiểm soát phiên bản nguồn mở được thiết kế để xử lý các dự án rất lớn là được phân phối trên nhiều kho . Trong ngữ cảnh của Android, chúng tôi sử dụng Git cho các hoạt động tại địa phương như phân nhánh địa phương, cam kết, thay đổi và chỉnh sửa.

Repo là công cụ mà chúng tôi xây dựng trên đầu trang của Git. Repo giúp chúng tôi quản lý nhiều kho lưu trữ Git , thực hiện việc tải lên vào hệ thống kiểm soát sửa đổi của chúng tôi và tự động hóa các phần của quy trình phát triển Android . Repo là không có nghĩa là để thay thế Git, chỉ để làm cho nó dễ dàng hơn để làm việc với Git trong bối cảnh của Android. Lệnh repo là một tập lệnh Python thực thi bạn có thể đặt bất kỳ đâu trong đường dẫn của mình.

Không có GUI cho Repo, như tôi có thể nói, nhưng có khá nhiều hướng dẫn trên trang web ở trên để kiểm soát những gì Repo đang làm từ dòng lệnh.

+2

http://source.android.com/source/developing.html: url corrext kể từ ngày đăng bài này – RichieHH

+3

Gỡ xuống Repo là một trong những công cụ/tập lệnh WORST mà tôi từng làm việc cùng. .. – Emad

+0

@eibrahim bạn có thể xây dựng được không? (Tôi quan tâm đến việc sử dụng Repo cho dự án của riêng mình, muốn nghe phản hồi ...) – Zvika

2

Go to:

http://source.android.com/source/git-repo.html

và bạn có thể tải về các tập lệnh repo. Nó là một kịch bản Python sử dụng lệnh git để thực hiện sửa đổi mã nguồn phân tán.

Sau khi bạn đã thực hiện repo sync, làm một ps -auwf để xem các quá trình:

Đối với tôi, tôi thấy:

\_ python -E /sde3/root/download/android/android/.repo/repo/main.py --rep 
     \_ git fetch korg 
      \_ git fetch korg 
      \_ git index-pack --stdin -v --fix-thin --keep=fetch-pack 5227 on 

Vâng, repo sync nghỉ thường xuyên. Nhưng nó là mạnh mẽ, chỉ cần khởi động lại lệnh và nó sẽ tiếp tục đồng bộ lại - những người đã được cập nhật sẽ không được áp dụng lại, vì vậy nó sẽ bỏ qua chúng và tiếp tục với phần còn lại.

+0

Nó được viết bằng Python, không phải bash. "Ps" của bạn cũng cho thấy điều đó. – claus

3

Liên quan đến điểm tạm dừng và khởi động lại, trong khi trong cửa sổ đầu cuối thực hiện đồng bộ hóa repo, bạn có thể nhấn "ctrl + z" để tạm dừng đồng bộ hóa. Để khởi động lại, chỉ cần gõ "fg" vào cùng một cửa sổ.

14

Như được đề cập trong trang web Android, repo không thay thế git. Nó chỉ là một công cụ trên git và giúp bạn quản lý nhiều kho lưu trữ git.Ví dụ: giả sử tôi có một dự án lớn có rất nhiều tính năng và tôi có một số nhóm làm việc trên từng tính năng và tôi đã tạo một kho lưu trữ cho từng tính năng. Ví dụ: giả sử các kho lưu trữ của tôi là wifi, telephony, power management, v.v. Hành động này có ý nghĩa khi các tính năng của bạn có các vòng đời khác nhau. Ví dụ: nếu tôi không chạm vào tính năng wifi trong bản phát hành tiếp theo của tôi và tôi sẽ sửa đổi tất cả các phần còn lại. Vì vậy, theo kịch bản này, dự án hoặc sản phẩm của tôi được phân phối trong một số kho lưu trữ git khác nhau.

Vì vậy, để có được bức ảnh tập trung của dự án (một thời điểm cụ thể trong dự án của tôi), tôi cần có bản sửa đổi (git hash hoặc tag) của mỗi kho lưu trữ. Hãy nhớ rằng chúng tôi có một kho lưu trữ cho mỗi tính năng. Bằng tay, tôi có thể làm điều đó nhưng có thể rất đau đớn. Vì vậy, với repo bạn có thể có một MANIFEST liên kết đến tất cả các sửa đổi của mỗi repo git (một cho mỗi tính năng) và có một hình ảnh cụ thể của toàn bộ dự án của tôi.

Nói một cách đơn giản, tôi có thể nói đó là cách quản lý nhiều kho lưu trữ tập trung được phân cấp.

Với repo, bạn có nhiều tính năng hơn, không chỉ để thanh toán tại một điểm cụ thể. Để biết thêm thông tin, hãy truy cập http://source.android.com/source/using-repo.html.

1

repo đồng bộ có các tùy chọn hữu ích khác nhau:

-f phục hồi sau khi ngắt kết nối

-c chỉ tải lên các chi nhánh mà bạn yêu cầu

-j < #CPUS> tăng tốc độ đồng bộ bằng cách tăng số lượng cpus được sử dụng bởi lệnh

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