git whitespace woes

时间:2009-08-22 16:27:03

标签: git settings whitespace

空白的冲突吮吸

空白对我来说是一种可怕的痛苦 使用git时。

git config apply.whitespace=strip

似乎会增加你发生冲突的机会(当你剥离时) 不需要的空格,然后其他合作者看到剥离 whitespace作为对其提交的更改?)

我已经为apply.whitespace尝试了一些其他配置 过去,也许其他一个配置解决了这个,或者也许就是这样 处理空白的其他设置,我还没来 但是我还没有找到一个明确的方法来达到我想要的目标。

我想静默解决空白冲突:

我从不希望在空白上再发生冲突。如果另一个 提交者改变空白,或者我改变空格然后必须改变 合并我自己的冲突,我真的不想知道它。 如果有人将我的代码从K& R样式更改为One True Brace样式 改变空格,我更喜欢git允许空白设置赢得胜利 看看有关它的冲突。我只是不太关心空白想要看到它的冲突。

所以......有什么方法可以配置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
remote.origin.url=...@github.com:tchalvak/ninjawars.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master 

2 个答案:

答案 0 :(得分:16)

Git1.6.0.4似乎有点旧,特别是如果你考虑到这一点:

  • 1.6.3.4中,“git apply --whitespace=fix”没有修复跟踪空格 不完整的行
  • 1.6.3.2中,“whitespace”设置的属性旨在检测已知的所有错误 来git,但它告诉git忽略尾随回车。

您可以尝试使用Git1.6.4.1,而不是设置全局配置,在您想要特殊空白句柄的文件上设置属性,例如patch describes

在给定目录中,创建一个.gitattributes文件。

* -whitespace

将忽略任何“空白”错误。

现在不会因为缺乏一致性而阻止任何冲突,但这可能值得尝试。


补丁是关于以下的测试:

  

仅忽略t/tNNNN-*.sht/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”会纠正该行所具有的空白错误,除了修补程序更新的行上的空白错误   但是,我们没有计算并报告我们在这些行上修复了空白错误。

答案 1 :(得分:7)

如果要打开这些设置,您需要安排一天,项目中的所有源代码都会通过运行脚本或者通过编辑执行条带的编辑器保存每个文件来均匀剥离空白区域。保存。然后所有未来的提交都将受到设置的监管,因此所有提交都应该很好。