web-dev-qa-db-ja.com

git空白の問題

空白の競合は吸う

Gitを使用している間、空白は私にとってひどい苦痛になってしまいました。

git config apply.whitespace=strip

競合が発生する可能性が高くなるようです(不要な空白を削除すると、他の共同作業者は削除された空白をコミットの変更と見なしますか?)

過去にapply.whitespaceの他のいくつかの構成を試しましたが、他の構成の1つでこれが解決されるか、空白を処理するための他の設定がありますが、まだ遭遇していません。私がなりたい場所にたどり着くための明確な方法はまだ見つかりませんでした。

空白の競合を黙って解決したい:

私は空白で別の衝突をしたくありません。別のコミッターが空白を変更した場合、または空白を変更してから自分の競合に対してマージする必要がある場合、私は本当にそれについて知りたくありません。誰かが空白を変更してコードをK&RスタイルからOne True Braceスタイルに変更した場合、競合を確認する必要があるのではなく、どちらかの空白設定を許可することをお勧めします。空白についての競合を見たいと思うほど、空白については気にしません。

だから......それを行うようにgitを設定する方法はありますか?

違いがある場合は、これが私のgitバージョンと現在の構成です:

tchalvak:~/ninjawars$ git --version
git version 1.6.0.4

tchalvak:~/ninjawars$
git config --list
color.branch=auto
color.diff=auto
color.status=auto
color.branch.current=yellow reverse
color.branch.local=yellow
color.branch.remote=green
color.diff.meta=yellow bold
color.diff.frag=Magenta bold
color.diff.old=red bold
color.diff.new=green bold
color.status.added=yellow
color.status.changed=green
color.status.untracked=cyan
gui.recentrepo=/home/tchalvak/zd/htdocs/cms
apply.whitespace=strip
user.name=****
user.email=****
alias.co=checkout
github.user=tchalvak
github.token=****
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
[email protected]:tchalvak/ninjawars.git
remote.Origin.fetch=+refs/heads/*:refs/remotes/Origin/*
branch.master.remote=Origin
branch.master.merge=refs/heads/master 
34
Kzqai

Git1.6.0.4 少し古いようですが、特に次のことを考慮した場合はそうです。

  • in 1.6.3.4 、 "git apply --whitespace=fix"は、不完全な行の末尾の空白を修正しませんでした
  • 1.6.3.2 で、設定されている "whitespace"属性は、gitが認識しているすべてのエラーを検出することを目的としていましたが、末尾のキャリッジリターンを無視するようにgitに指示しました。

Git1.6.4.1を試してみて、グローバル構成を設定するのではなく、次のように、特別な空白ハンドルが必要なファイルに属性を設定してください パッチの説明

指定されたディレクトリに、.gitattributesファイルを作成します。

* -whitespace

これは「空白」エラーを無視します。

これで、一貫性の欠如による競合を防ぐことはできませんが、試す価値があるかもしれません。


パッチは以下についてのテストでした:

t/tNNNN-*.shおよびt/tNNNNサブディレクトリの空白エラーのみを無視してください。
他のファイル(テストライブラリなど)は引き続きチェックする必要があります。

t/.gitattributes
t[0-9][0-9][0-9][0-9]-*.sh  -whitespace
t[0-9][0-9][0-9][0-9]/*     -whitespace

注(Git 2.3.2 +、2015年第1四半期、 commit 0a80bc9 、Junio C Hamano、別名 gitster ) "git apply --whitespace=fix"は廃止されましたサイレント:

git apply --whitespace=fix」は、一般的なコンテキスト行の空白エラーを修正しましたが、報告せずに修正しました。

着信パッチの共通コンテキスト行(つまり、パッチによって検出されることが予想され、変更されていない行)に空白エラーがある場合、「apply --whitespace=fix」は、行に加えて、行にある空白エラーを修正します。パッチによって更新された行の空白エラー。
ただし、そのような行の空白エラーを修正したことはカウントおよび報告していません。

17
VonC

これらの設定をオンにする場合は、スクリプトを実行するか、保存時に削除を実行するエディターからすべてのファイルを保存することにより、プロジェクト内のすべてのソースコードが空白を均一に削除する日をスケジュールする必要があります。その後、すべての将来のコミットは設定によって監視されるため、すべてが順調に進んでいるはずです。

8
SteveS