2011-12-15 18 views
23

EDIT:'Git commit' có nghĩa là gì khi nói 'create mode ...' trên stdout?

Xem Danny Lin's git-store-meta làm giải pháp được đề xuất cho vấn đề về siêu dữ liệu phiên bản được mô tả bên dưới. Tôi vẫn chưa kiểm tra nó từ năm 2015-05-13.

HỎI ORIGINAL:

Làm create|delete mode ... dòng trong git commit đầu ra (ví dụ dưới đây) đại diện cho một số loại kiểm soát siêu dữ liệu? (Và/hoặc, những dòng này đại diện cho những gì nói chung?) Đây có vẻ là các mã/biểu diễn cho phép tập tin giống như Unix, mặc dù tôi không chắc chắn về bản đồ, nhưng câu hỏi lớn hơn là: điều gì sẽ xảy ra nếu git do với các mã/cài đặt/giá trị này? Git có cố gắng tận dụng các mã đã lưu này bằng bất kỳ cách nào để chứng minh hữu ích để giải quyết các vấn đề siêu dữ liệu câu hỏi superuser.com của tôi hay không. ? "] (https://superuser.com/questions/367729/how-to-reuse-extend- etckeepers-metadata-engine-cho-git-control-of-non-etc-file)? Tôi biết rằng git không kiểm soát tất cả siêu dữ liệu hệ thống tệp.

[Git dường như đã kiểm soát "thuộc tính có thể thực thi/perm" của một tệp (dường như di động cho hầu hết các hệ điều hành) và một số thứ khác như liên kết hệ thống tệp. Tôi đang tìm kiếm một cơ chế kiểm soát cụ thể hơn Unix/Linux/BSD/DarwinMacOSX để biết thêm/tất cả siêu dữ liệu, cụ thể là tất cả các quyền và quyền sở hữu của người dùng/nhóm. ACL và điều khiển siêu dữ liệu khác tùy chọn. Đang cố gắng để xem những thứ git được hiện lưu trữ có thể hữu ích để giải quyết vấn đề này.]

[email protected] Dec 15 09:40:45 ~/.../sandbox-1# git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# modified: README 
# new file: dummy-file-will-be-removed 
# deleted: ownerfile 
# 
[email protected] Dec 15 09:40:45 ~/.../sandbox-1# git commit -m "testing git" 
[master c5b0201] testing git 
2 files changed, 1 insertions(+), 2 deletions(-) 
create mode 100644 dummy-file-will-be-removed 
delete mode 100644 ownerfile 
[email protected] Dec 15 09:41:55 ~/.../sandbox-1# 
[...] 
[email protected] Dec 15 11:33:11 ~# git --version 
git version 1.7.4.1 
[email protected] Dec 15 11:33:14 ~# 
+0

'Chế độ' của' số ba cuối cùng' là quyền 'tệp 'cho các nhóm người dùng khác nhau. Và 'ba đầu tiên' là về' loại tệp', không rõ ràng về điều này. Bạn có thể thử nghĩ như thế này: tạo một tệp có tên 'dummy-file-will-be-removed' có' mode là 100644'.;) – Kjuly

Trả lời

18

Để biết thêm thông tin về chế độ Git, hãy xem this answer.

Khả năng lưu trữ siêu dữ liệu tệp của Git được giới hạn trong một tập con thông tin đơn giản cho phép Git theo dõi một số thay đổi hệ thống tệp cơ bản cho phép Git theo dõi các thay đổi có liên quan cho quản lý mã nguồn; chẳng hạn như liệu một tệp đã được sửa đổi hay chưa và liệu tệp có phải là tệp thông thường hay tệp thi hành hay không.

Git không cố gắng thực hiện bất kỳ khái niệm nào của hệ thống tệp, để lại thói quen hệ thống tệp cho việc triển khai hệ thống tệp thực. Điều này có ý nghĩa tốt để cho phép Git hoạt động bình đẳng cho dù trên hệ thống tệp FAT32, NTFS, EXT3, XFS, NFS, v.v. chạy trên Linux, MacOS, Windows, v.v.

+0

+1 cho [câu trả lời này] (http://stackoverflow.com/a/8347325/605356), thx. fwiw, đang cố gắng mở rộng khả năng git với ** tùy chọn ** kiểm soát siêu dữ liệu trong hệ điều hành thời trang cụ thể/hệ thống tập tin cụ thể. Triển khai hệ thống tự động thích hợp là nhức đầu mà không có kiểm soát siêu dữ liệu tệp tốt cho chỉ những điều cơ bản phổ biến trên nhiều/hầu hết các hệ thống tệp POSIX/unix/linx/MacOS. (Đọc: Tôi không tự động triển khai trên Windows.) Thêm chi tiết tại [câu hỏi của tôi ở đây] (http://superuser.com/questions/367729/how-to-reuse-extend-etckeepers-metadata-engine-for -git-control-of-non-etc-file). –

+0

Chỉnh sửa câu hỏi gốc để giải quyết ở trên. Than ôi, theo câu trả lời ở trên, hiện có (có lẽ) đã phát hiện ra các giới hạn của 'index-format.txt' của git, đó là [khá hạn chế] (http://stackoverflow.com/a/8347325/605356). Tuy nhiên, câu trả lời cho biết mô tả một tập tin nhóm có thể ghi, đó là tin tức mới, và hữu ích ... giả sử nó hoạt động. –

+0

@JohnnyUtahh Câu hỏi [Siêu người dùng] của bạn (http://superuser.com/questions/367729/how-to-reuse-extend-etckeepers-metadata-engine-for-git-control-of-non-etc-file) là một câu hỏi tốt, được nghiên cứu; tôi không biết về bất kỳ công cụ hoặc tiện ích nào của Git để cho phép phiên bản siêu dữ liệu tệp. –

3

Không, git không lưu trữ siêu dữ liệu đầy đủ. Nó chỉ lưu trữ loại tệp (và nó được giới hạn trong các tệp tin, thư mục và các liên kết tượng trưng thông thường) và liệu tệp có thực thi được (tất nhiên các thư mục này là theo mặc định).

6

Đây là các quyền đối với tệp dưới dạng giá trị quyền kiểu unix. Chúng được in trong bát phân và đại diện cho các cụm 3 bit để đọc, ghi và thực thi. Nếu bạn nhìn vào một đối tượng cây trong git (ví dụ: git ls-tree HEAD), bạn có thể xem tất cả các bản ghi git về nội dung của một thư mục. Đó là cây có chứa các cây và các đốm màu với các bit cho phép

C:\project>git ls-tree HEAD 
100644 blob 66f3f25c8ca9ae73b99669aca6ba5ecfa4703b2b .gitignore 
100644 blob 60b88ac20b8b7cccdcd856e65415a9eb9495b63a Makefile 
040000 tree e1d9381e4d12effea7e33f8d7e2b16e372f67b51 demos 
100644 blob a60e08eeb9f75160ae2bf6a9feeff3c1c75bfc1d doxygen.cfg 

6 có nghĩa là đọc-ghi, 4 là chỉ đọc.

+1

Cần lưu ý rằng '644' này là * không * nhất thiết là quyền truy cập unix thực của tệp đã cho: tệp có quyền '664' và' 600' sẽ được lưu trữ trong git là' 644' – MestreLion

+1

- không phải là bạn sai. Tôi chỉ cố gắng sử dụng git 1.8.0.1 trên Linux và thực sự các tập tin 0600 tôi thêm vào hiển thị như là 0644 trong cây git. Đây có thể là lỗi hoặc có thể do thiết kế. – patthoyts

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