Windows環境でGitを使用してファイルをコミットまたはチェックアウトすると、ファイル属性が保持されないことに気付きました(たとえば、非表示または読み取り専用)。隠しファイルをコミットしてから別のコンピューターでチェックアウトすると、ファイルは隠されなくなります。GitにWindowsファイル属性を認識させることは可能ですか?
3 に答える
いいえ。Gitは完全なUNIX権限も追跡しません。便宜上、実行可能ビットを記憶しているだけです。理由については、これはバージョン管理システムであり、主にソースコードを追跡するように設計されています。これにより、その機能はまったく役に立たなくなります(「hidden」属性はそれ自体ではまったく役に立たないことは言うまでもありません)。
チェックアウト後のクライアント側フックを使用して、必要な変更を加えることができます。あなたの場合、それを使用して、必要なWindowsファイル属性を設定するスクリプトを実行します。
ProGitは、これを一般的な用語で「その他のクライアントフック」の段落で説明しています。
また、githooksのマニュアルページを参照してください。
@wadesworldの提案を試してみて、これを思いつきまし\.git\hooks\post-checkout
た。内容を含むファイルを作成します。
#!/usr/bin/env pwsh
param (
$PreviousHead,
$NewHead,
# Branch 1, File 0.
$BranchOrFile
)
$Name = '.HideMe'
if ((Test-Path $Name) -and !(Get-Item $Name -Force).Attributes.HasFlag([IO.FileAttributes]::Hidden)) {
(Get-Item $Name).Attributes += 'Hidden'
}
非表示にするファイル/フォルダーに変更.HideMe
します。たとえば、ブランチチェックアウトまたはファイルチェックアウトでのみ実行するなど、必要に応じて3つのパラメーターを使用することもできます。これを機能させるにはPowerShellCoreをインストールする必要がありますが、おそらくcmdまたはWindowsPowerShellでも実装できます。