ディレクトリがgit制御下にあるかどうかを判断する方法については、多くの質問がstackoverflowにあります。そして、答えは子プロセス経由で コマンドを呼び出すことによってgit
コマンドを使用しています。gitを使わずにディレクトリが有効なgitディレクトリであるかどうかを調べるには?
私が知りたいのは、ディレクトリが有効なgit ディレクトリであるかどうかを判断する方法です。
git init
コマンドは.git
ディレクトリの下に、これらのファイルを作成します。
config
description
HEAD
hooks
info
objects
refs
同じことがgit init --bare
となります。
私はgit init
コマンドを実行し、次にgit
を削除/アンインストールしましたかと思います。 私のシステム。そして、私はdirがgit
dirであるかどうか確認したい。明らかに、私は git rev-parse
コマンドを使用することはできません。だから、私はこれらのファイルをチェックすることによってチェックを行う必要があると思う。これらのファイルには何が存在する必要があるので、.git
ディレクトリ は有効な.git
リポジトリですか?そして、追加のチェックが必要ですか?
UPDATE詳細:私はここに有効で必要なもの
は、さらに他の操作 を許可するチェック最小です。私は説明がうまくいかない。しかし、私は2つの機能(擬似コード)を持っているとしましょう:私だけ.git
ディレクトリを確認した場合
fn is_valid(gitdir) {
// here will happens checking if a git dir is valid. it doesn't care
// if any content is corrupted.
return valid;
}
fn current_branch(gitdir) {
// here will show current branch. but, will only run if the gitdir
// is valid
// this function will read 'refs' directory
return current;
}
fn list_branches(gitdir) {
// here will list of branches. but, will only run if the gitdir is valid
// this function will read 'refs/heads'
return branches;
}
が、それはbare
リポジトリ上では動作しません。次に、 は、は、HEAD
,refs
、objects
が の場合にのみ機能することがわかりました。したがって、HEAD
をチェックすると、refs
とobjects
で十分ですか?
"有効"とは何を意味するかによって異なります。 – 1615903
「有効」を定義します。いくつかのGitオブジェクトが壊れていても問題ありませんか? *すべての* Gitオブジェクトが壊れている場合はどうなりますか?無効と宣言する前に、ディレクトリに「間違っている」ことをどれくらい許可したいですか? – torek