使用TortoiseSVN或命令行SVN在Subversion存储库中设置SVN"execute"位

KPe*_*xEA 50 svn version-control tortoisesvn

我有一个托管在code.google.com上的开源应用.它是跨平台的(Linux/Windows/Mac).我最初使用TortoiseSVN从WinXP机器上传了代码,似乎没有一个用于linux构建的"配置"批处理文件都设置了"执行"位.

为需要它们的文件设置这些最简单的方法是什么?我想,使用TortoiseSVN会更容易,但如果不能使用,那么我也可以在我的linux机器上使用命令行SVN.

bmd*_*cks 83

以下是在命令行中执行此操作的方法:

for file in `find . -name configure`; do
  svn ps svn:executable yes ${file}
done
Run Code Online (Sandbox Code Playgroud)

或者只有一个文件(configure这里是文件名):

svn ps svn:executable yes configure
Run Code Online (Sandbox Code Playgroud)

  • 请注意,要清除可执行位,必须使用svn propdel svn:executable <foo>.你不能只把它设置为"不". (10认同)
  • 您的第一个版本将在任何带有空格的路径或文件名上失败... (3认同)
  • 您还可以在文件列表中使用propset - 请参阅http://stackoverflow.com/a/5757365/134647 (2认同)

小智 20

使用tortoise SVN,它非常简单:您可以选择多个文件(可能来自搜索结果,因此它们不必位于同一目录中),在TortoiseSVN菜单中选择"属性",添加所需的属性(有一个主要使用的属性的下拉列表,在本例中为"svn:executable")并设置值(在本例中为"*").如果提交更改的文件并在linux下检查它们,则将设置可执行位.

如果要一次设置多个属性,首先为一个文件正确设置属性,将它们导出到文件,选择所有需要的文件,选择"属性"菜单可能更安全(如果出错)并导入以前保存的属性.


小智 7

在Unix上使用{}来解决结果:

find . -type f -name "*.bat" -exec svn propset svn:executable yes '{}' \;
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这个属性需要"是"作为有效参数?发现另一个例子''代替是,也有效...

  • svn:executable属性是一个布尔值.将其设置为"是"或"*"或_anything_就足够了.svn检查属性是否已设置,而不是其内容 - 即使您将其设置为"是",大多数客户端也会将值报告为"*". (7认同)