2013-07-11 20 views
14

Tôi tự hỏi rằng git clone --verbose không phải là rất tiết. Đầu ra của việc thực thi lệnh là như sau:Chế độ tiết kiệm bản sao Git - hiển thị từng đối tượng gửi đến

$ git clone --verbose <repo> 
remote: Counting objects: 184, done 
remote: Finding sources: 100% (184/184) 
remote: Total 184 (delta 66), reused 183 (delta 66) 
Receiving objects: 100% (184/184), 18.90 KiB, done. 
Resolving deltas: 100% (66/66), done. 

Hành vi mong đợi là xem danh sách các đối tượng đã nhận từng cái một. Có thể sử dụng một số tùy chọn khác không?

+0

Thực tế thú vị - nếu 'git' thực sự đã báo cáo mỗi đối tượng một-by -Một khi bạn đề xuất, thì một bản sao của git 'của kho lưu trữ nhân Linux sẽ tạo ra hơn 2 triệu dòng đầu ra. Có lẽ lý do chính đáng không được thực hiện theo cách đó ... Nếu bạn thực sự muốn thông tin đó, bạn có thể thử 'git rev-list --objects --all' ... – twalberg

+0

Tôi hiểu, bạn có biết đó là" git rev- list --objects --all "cung cấp cùng thứ tự của các đối tượng" git clone "cho" Receiving objects "? Tôi cần điều đó bởi vì đôi khi tôi nhận được lỗi mạng khi nhận được một trong những điều khó hiểu và tôi muốn che giấu chính xác đối tượng này trong cây. – erkfel

+0

Tôi sẽ vô cùng ngạc nhiên nếu "lỗi mạng" của bạn theo bất kỳ cách nào liên quan đến một đối tượng cụ thể hiện đang được truyền qua một cổng TCP. Thứ tự có thể không giống nhau, vì 'git' đang tạo và gửi một tệp gói chứa các đối tượng được yêu cầu và các đối tượng đặt hàng được đặt vào một tệp gói có vẻ hơi tùy ý. – twalberg

Trả lời

13

Không thể liệt kê các đối tượng (tệp, cam kết, blob, bất kỳ thứ gì) từng cái một, đơn giản vì git gói chúng vào một tệp duy nhất vì lý do hiệu quả. Vì lý do tương tự, bạn sẽ chỉ thấy một thư mục .git ẩn trong khi nhân bản, các tệp sẽ chỉ được tạo nếu tệp gói đầy đủ đã được tải xuống.

Nếu bạn thắc mắc, các tệp gói này sẽ được tải xuống .git/objects/pack/ với tên như tmp_pack_XXXXXX. (sau này, nó sẽ được đổi tên thành một cái gì đó như pack-*.pack với một tệp có liên quan pack-*.idx)

0

Tôi chấp nhận @Lekensteyn answer.

Nếu bạn muốn theo dõi lệnh git remote, thêm các biến môi trường sau vào terminal của bạn.Điều này giúp bạn nhìn vào những gì đang chạy đằng sau hậu trường của lệnh git.

export GIT_TRACE_PACKET=1 
export GIT_TRACE=1 
export GIT_CURL_VERBOSE=1 

tham khảo: https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables

mẫu Nhân bản Kết quả sau khi xuất enter image description here

enter image description here

enter image description here enter image description here

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