これまで、本稿の Gist にて公開しておりました git 2.17.0 以降において config ファイルの lock に失敗する場合の挙動を変更する差分ファイルについて、差分ファイルの分量が多くなったことに伴い、今後は以下の Github のリポジトリにて差分ファイルを公開することと致します。
- git 2.17.0 以降において config ファイルの lock に失敗する場合の挙動を変更する差分ファイル
なお今後、本 Gist には本稿のみを残しておきますので、差分ファイルにつきましては上記 URL より取得して下さいますよう御願い致します。以上誠に勝手ながらどうか御了承下さいますよう御願い致します。
分散型バージョン管理システムである git において、 VFAT ファイルシステム及び Android OS 及び Debian noroot 環境における外部ストレージ領域において、 git clone
コマンド等を用いて新しい git リポジトリを作成する場合に、 .git/config
ファイルの lock ファイルについて lock ファイルの権限の変更に失敗するために、 .git/config
の lock に失敗し、リポジトリが作成できない問題が発生しています。
これらの差分ファイルは、 git において、前述のような .git/config
ファイルの lock に失敗する場合の挙動について、 lock の失敗を無視するかどうかの git の挙動を設定する事を可能にするための差分ファイルです。
また、 git のインストール時において、ハードリンクに代えてシンボリックリンクを使用する修正も同時に加えています。
git のソースコードに差分ファイルを適用するには、安定版の git-x.y.z
(ここに、x, y, z は安定版のバージョン番号。以下同様。) には、差分ファイル git-x.y.z-fix.diff
を、github 上の git には、差分ファイル git-HEAD-xxxxxxxxx-fix.diff
(ここに、 xxxxxxxxx は、 HEAD 版の commit 番号) をそれぞれ適用して下さい。
例えば、安定版の git-x.y.z
のソースコードに git-x.y.z-fix.diff
を適用するには、安定版の git-x.y.z
のソースコードが置かれているディレクトリより、以下のようにして差分ファイル git-2.17.0-fix.diff
を適用します。
$ patch -p1 < /path/to/git-x.y.z-fix.diff
(ここに、/path/to/diff は、 git-x.y.z-fix.diff が置かれたディレクトリのパス名)
なお、以下に示す差分ファイルは、それぞれ右に示す git の安定版にも適用可能です。
git-2.17.0-fix.diff
… git-2.17.1, git-2.17.2git-2.18.0-fix.diff
… git-2.18.1git-2.19.0-fix.diff
… git-2.19.1git-2.20.0-fix.diff
… git-2.20.1
そして、 github 上の git のソースコードに git-HEAD-xxxxxxxxx-fix.diff
を適用するには、安定版の github 上の git のソースコードが置かれているディレクトリより、以下のようにして差分ファイル git-HEAD-xxxxxxxxx-fix.diff
を適用します。
$ patch -p1 < /path/to/git-HEAD-xxxxxxxxx-fix.diff
(ここに、/path/to/diff は、 git-HEAD-xxxxxxxxx-fix.diff が置かれたディレクトリのパス名)
差分ファイルの適用後は、以下のようにして git をコンパイル及びインストールします。
$ make prefix=/path/to/install install CFLAGS="..." LDFLAGS="..."
(ここに、 /path/to/install は git のインストール先のパス名であり、環境変数 CFLAGS, LDFLAGS は適切な値を設定する。)
git において、 .git/config
ファイルの lock の失敗を無視するかどうかの挙動の設定については、設定項目 core.errorLevelConfigLockFailure
を使用します。 core.errorLevelConfigLockFailure
に設定する各設定値の意味は下記の通りです。
core.errorLevelConfigLockFailure = error
通常の git の動作の通り、 lock の失敗時に異常終了します。core.errorLevelConfigLockFailure = warn
git の動作において、.git/config
ファイルの lock の失敗時に警告メッセージを表示した後、 lock の失敗を無視してリポジトリの作成等を続行します。
設定項目core.errorLevelConfigLockFailure
のデフォルト値です。core.errorLevelConfigLockFailure = quiet
git の動作において、.git/config
ファイルの lock の失敗時に何もメッセージを表示せず、 lock の失敗を無視してリポジトリの作成等を続行します。
ここで、設定項目 core.errorLevelConfigLockFailure
を変更するには下記のコマンドを実行します。
$ git config --global core.errorLevelConfigLockFailure quiet
(若しくは、 git config --global core.errorLevelConfigLockFailure error)
(若しくは、 git config --global core.errorLevelConfigLockFailure warn)
なお、 設定項目 core.errorLevelConfigLockFailure
については、設定ファイル $HOME/.gitconfig
を直接編集することでも設定できます。
なお、これらの差分ファイルの作成に当たっては、 termux の開発コミュニティ による差分ファイルを参考にしました。 termux の開発コミュニティの皆様には心より感謝致します。
そして、 Junio C Hamano 氏を始めとした git の開発コミュニティの皆様及び git に関わる全ての方々にも心より感謝致します。