50

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

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

4

5 回答 5

83

以下是如何在命令行上执行此操作:

for file in `find . -name configure`; do
  svn ps svn:executable yes ${file}
done

或仅针对一个文件(configure此处为文件名):

svn ps svn:executable yes configure
于 2008-09-19T16:32:34.000 回答
20

使用 tortoise SVN,很简单:你可以选择多个文件(可能来自搜索结果,所以它们不必在同一目录中),在 TortoiseSVN 菜单中选择“属性”,添加所需的属性(有最常用属性的下拉列表,在本例中为“svn:executable”)并设置值(在本例中为“*”)。如果提交更改的文件并在 linux 下检出,可执行位将被设置。

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

于 2008-09-19T16:38:56.420 回答
7

在 Unix 上使用 {} 来处理结果集:

find . -type f -name "*.bat" -exec svn propset svn:executable yes '{}' \;

有谁知道为什么这个属性需要“是”作为有效参数?找到另一个用 '' 而不是 yes 的例子,也可以...

于 2011-01-07T11:10:49.450 回答
4
find . -type f -name "*.bat" -exec svn propset svn:executable yes "${}" \;

当然 .exe 等也是如此。

于 2009-11-12T16:00:53.423 回答
1

恢复svn导入过程中丢失的可执行权限的方法:

从您在 svn 导入期间使用的原始源复制权限(当前目录到版本 1):

find . -type f | xargs -I {} chmod --reference {} ../version1/{}

然后使用以下 shell 脚本为所有可执行文件设置 svn:executable:

for file in `find . -executable -type f`; do
  svn ps svn:executable yes ${file}
done
于 2014-11-25T14:01:39.123 回答