web-dev-qa-db-ja.com

stdoutで「作成モード...」と表示されている場合、「git commit」とはどういう意味ですか?

編集:

以下で説明するバージョン管理メタデータの問題の解決策として提案されている Danny Linのgit-store-meta を参照してください。 2015-05-13の時点ではまだテストしていません。

元の質問:

create|delete mode ...出力(下の例)のgit commit行は、ある種のメタデータコントロールを表していますか? (そして/または、これらの行は一般的に何を表していますか?)これらはunixのようなファイル許可コード/表現であるように見えますが、マッピングは正確にはわかりませんが、より大きな質問は: gitdoこれらのコード/設定/値で? gitは、これらの保存されたコードを何らかの方法で活用して、メタデータの問題を解決するのに役立つことを証明しますか?superuser.comの質問[「etc/etc以外のファイルシステムのgit制御のためにetckeeperのメタデータエンジンを再利用/拡張する方法、またはgitをネイティブに拡張する方法? "]( https://superuser.com/questions/367729/how-to-reuse-extend- etckeepers-metadata-engine-for-git-control-of-non-etc-file )? gitがすべてのファイルシステムメタデータを制御するわけではないことを知っています。

[Gitは明らかに、すでにファイルの「実行可能な属性/パーマ」(ほとんどのOSには明らかに移植可能)や、ファイルシステムリンクのような他のものをすでに制御しています。より多く/すべてのメタデータ、つまりすべての権限とユーザー/グループの所有権について、より多くのUnix/Linux/BSD/DarwinMacOSX固有の制御メカニズムを探しています。 ACLおよびその他のメタデータコントロールはオプションです。現在gitが格納されているものかどうかを確認しようとすると、この問題を解決するのに役立つ場合があります。]

root@node1 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
#
root@node1 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
root@node1 Dec 15 09:41:55 ~/.../sandbox-1# 
[...]
root@node1 Dec 15 11:33:11 ~# git --version
git version 1.7.4.1
root@node1 Dec 15 11:33:14 ~# 
36
Johnny Utahh

Gitのモードの詳細については、 この答え を参照してください。

ファイルメタデータを保存するGitの機能は、Gitがいくつかの基本的なファイルシステムの変更を追跡できるように、情報の単純なサブセットに制限されています。これにより、Gitはソースコード管理に関連する変更を追跡できます。ファイルが変更されているかどうか、ファイルが通常のファイルであるか実行可能ファイルであるかなど。

Gitはファイルシステムの概念を実装しようとせず、ファイルシステムルーチンを実際のファイルシステム実装に任せます。これは、Linux、MacOS、Windowsなどで実行されているFAT32、NTFS、EXT3、XFS、NFSなどのファイルシステムでGitが同等に機能できるようにするのに適しています。

24
Dan Cruz

これらは、UNIXスタイルのアクセス許可値としてのファイルのアクセス許可です。それらは8進数で出力され、読み取り、書き込み、実行のための3ビットのクラスターを表します。 gitでツリーオブジェクトを見る場合(例:git ls-tree HEAD)ディレクトリの内容に関するすべてのgitレコードを確認できます。つまり、ツリーには権限ビットを持つツリーとブロブが含まれています

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

6は読み取りと書き込みを意味し、4は読み取り専用です。

9
patthoyts

いいえ、gitは完全なメタデータを保存しません。ファイルのタイプ(および通常のファイル、ファイル、ディレクトリ、シンボリックリンクに限定されます)とファイルが実行可能かどうか(もちろん、デフォルトではどのディレクトリか)のみを保存します。

3
fge