使用TortiseSVN或命令行SVN在Subversion版本库中设置SVN“执行”位

我有一个在code.google.com上托pipe的开源应用程序。 它是跨平台的(Linux / Windows / Mac)。 我最初从WinXP机器上使用TortiseSVN上传代码,似乎没有一个用于linux版本的“configuration”batch file设置了它们的“执行”位。

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

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

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

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

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

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

 svn ps svn:executable yes configure 

在Unix上使用{}来设置地址:

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

有谁知道为什么这个属性要求“是”作为有效的论点? find另一个例子,而不是是,也是…

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

当然,对于.exe等也是如此

用于恢复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