【问题标题】:What's the best way to have svn:eol-style=native for text files by default?默认情况下,为文本文件设置 svn:eol-style=native 的最佳方式是什么?
【发布时间】:2011-11-06 02:03:02
【问题描述】:

我发现最好让所有文本文件都设置svn:eol-style=native 属性。但是最有效的方法是什么?

我主要在 Windows 上开发程序(使用 TortoiseSVN 和svn.exe 命令行),有时还为 Windows 和 Linux 编写可移植的 C/C++ 库。为了防止我的源文件出现讨厌的 mix-CR,LF 问题,我认为 svn:eol-style=native 应该是“默认”,但不幸的是它不是。

我从 Subversion 红皮书知道,在 ~/.subversion/config%APPDATA%\Subversion\config 中配置 [auto-props] 会有所帮助,但是,这是针对每个客户端设置的。我团队中的一些开发人员忘记配置这些配置文件怎么办(想想多个虚拟机上的开发人员)?甚至所有人都记得,如果出现某种新的文本文件扩展名怎么办?如何将此更改正确传播到我团队中所有开发机器上的所有配置文件?

一切似乎都是一个繁琐的过程。

【问题讨论】:

标签: svn


【解决方案1】:

我团队中的一些开发人员忘记配置这些配置怎么办? 文件(想想多个虚拟机上的开发)?

只是修复错误。

如果您发现错误签入的文件,则修复起来并不难。 首先,将文件更改为适合您平台的正确行尾样式。任何编程编辑器都应该能够使用一些内置命令来切换样式,或者您可以使用“fromdos”或“todos”类型的实用程序。 修复后,设置属性并签入:

 svn propset svn:eol-style native filename
 svn commit filename

复制我的评论:

另一个建议是使用预提交挂钩,检查 svn:eol 样式设置(和存在)并在需要时修复

【讨论】:

  • 另一个建议是使用 pre-commit 钩子,检查 svn:eol-style 设置(和存在)并在需要时修复
  • 可能是个好主意。可以在提交到存储库之前将预提交挂钩以静默方式将 svn:eol-style=native 属性添加到提交的文件吗?当 svn 客户端下次执行 'svn update' 时,他会自动获取该属性。
  • 我认为 - 它可以:你可以在钩子脚本中使用任何命令。我不只知道如何获取提交中文件的文件列表和列表中的单个文件
  • 直到 svn 1.7,我不得不承认安装预提交钩子是最可行的方法。请将您的第一条评论复制到您的答案正文中,我会将其标记为已接受。谢谢。顺便说一句:提交的“获取文件列表”很容易使用 svnlook.exe ,所以现在没有技术障碍。
【解决方案2】:

Subversion 1.8 方式

因为 Subversion 1.8 获得了repository dictated configuration (RDC),对于 强制 使用 所有 客户端对给定存储库的通用设置,属性可以而且必须在存储库根(或主干)

【讨论】:

  • 谢谢。 svn 1.8 的解决方案非常棒,我认为它解决了 99% 的麻烦。
【解决方案3】:

这应该是一个快速的答案,而不是“深入了解细节并自己获取,这里是链接”版本。

我们会做的,好吗?对于颠覆 1.8+:

$ cd my_checkout_dir

$ svn propset svn:auto-props '
### src
*.c = svn:eol-style=native
*.cpp = svn:eol-style=native
*.h = svn:eol-style=native
*.pch = svn:eol-style=native
*.lua = svn:eol-style=native
*.py = svn:eol-style=native
*.pl = svn:eol-style=native
*.txt = svn:eol-style=native
*.sh = svn:eol-style=native;svn:executable
### ui
*.xib = svn:eol-style=native
*.ui = svn:eol-style=native
*.qrc = svn:eol-style=native
### project
*.pro = svn:eol-style=native
*.pbxproj = svn:eol-style=native
*.json = svn:eol-style=native
*.xcworkspacedata = svn:eol-style=native
*.plist = svn:eol-style=native
' .

$ svn commit -m 'Got really tired of svn:eol-style issues'

请注意最后关闭单引号和点(即当前目录)。根据您的需要调整此列表,将svn propset svn:auto-props '…' . 复制到 unix/msys sh-terminal(是的,使用 Enter)。提交后,my_checkout_dir 下面的所有文件都会在添加时继承相应的属性。 在此操作之前添加的文件不会被修改。正如您在*.sh 及以下内容中看到的,您可以通过; 添加更多属性。如果您想更改列表,只需再次重复所有内容即可。

以下是 svn 在我的~/.subversion/config 中建议的默认值供​​参考:

### The format of the entries is:
###   file-name-pattern = propname[=value][;propname[=value]...]
### The file-name-pattern can contain wildcards (such as '*' and
### '?').  All entries which match (case-insensitively) will be
### applied to the file.  Note that auto-props functionality
### must be enabled, which is typically done by setting the
### 'enable-auto-props' option.
# *.c = svn:eol-style=native
# *.cpp = svn:eol-style=native
# *.h = svn:keywords=Author Date Id Rev URL;svn:eol-style=native
# *.dsp = svn:eol-style=CRLF
# *.dsw = svn:eol-style=CRLF
# *.sh = svn:eol-style=native;svn:executable
# *.txt = svn:eol-style=native;svn:keywords=Author Date Id Rev URL;
# *.png = svn:mime-type=image/png
# *.jpg = svn:mime-type=image/jpeg
# Makefile = svn:eol-style=native

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多