【问题标题】:Any idea what this error means in SVN?知道这个错误在 SVN 中意味着什么吗?
【发布时间】:2010-09-01 00:07:41
【问题描述】:

发送example.java 传输文件数据.svn:提交失败(详情如下): svn: 'pre-commit' 钩子失败,错误输出: 例子.java 文件中不需要的 TAB:example.java

我尝试恢复我的更改,然后即使只是添加了一个额外的字符,我也会看到这个错误。很奇怪!任何帮助将不胜感激O_O

【问题讨论】:

  • 你必须和你的 subversion repo 的管理员交谈。显然,服务器使用的任何预提交钩子都不喜欢您的 Java 文件的格式。
  • 你有一个预提交钩子——一个在提交之前检查你的文件的脚本——它已经看到你的代码包含一个或多个制表符(至少这就是消息所显示的内容)。您应该以某种方式编辑文件以删除选项卡,或与当地专家讨论预提交挂钩。可能是您的编辑器以某种方式摆弄文件中的空格,因此即使您进行了小的更改,也会出现该消息。您可以在 vi 等基本编辑器中检查文件吗?

标签: java svn


【解决方案1】:

您的 SVN 服务器有 pre-commit rules 来检查您的提交(包括提交 cmets)的有效性。这些规则通常用于强制执行某些事情,例如在提交 cmets 中包含分支号以实现可追溯性。您的 example.java 文件中包含 TAB 字符似乎违反了预提交规则。尝试从 example.java 中删除所有 TAB 字符并重新提交。

我必须承认一个奇怪的规则。将空格与制表符的争论发挥到了极致.....

【讨论】:

  • 奇怪的是,即使我恢复所有更改,并尝试通过添加任何性质的额外字符来重新提交,我仍然会收到相同的错误,所以我不太明白为什么TAB 会引发问题...或者该政策可能是在上次提交后添加的?嗯...
  • 提交挂钩位于 $REPOS_ROOT\hooks\pre-commit.tmpl(或可能是 pre-commit.bat)中。如果您可以访问 svn 服务器,则可以检查修改标记,就好像您无法在没有添加任何选项卡的情况下提交现有文件一样,这是新规则或正在发生的其他事情。
【解决方案2】:

听起来您的 SVN 服务器做了一些不允许在 java 源文件中使用制表符的预提交处理。尝试配置您的 IDE 以将制表符替换为空格。

【讨论】:

    【解决方案3】:

    非常感谢各位。毕竟是格式问题。我不知道它是怎么发生的,但最终通过 gong to Eclipse -> Source -> Format 解决了它

    干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 2021-06-10
      相关资源
      最近更新 更多