我们想将版本控制从svn迁移到git。一切都相当容易,只有一个小问题。
在我们的发布过程中,我们有一个烟雾测试来确保任何shell脚本在磁盘和仓库中都设置了可执行标志。
在svn中这很容易。我们只需要检查包装函数返回的列表即可。
问题是,是否有更好的方法来完成它。如果没有,这种方法是否稳定?
当然,在这里我们可能会遇到竞态条件,但由于其预期用途是在专用构建机上使用,这对我们不是问题。
在我们的发布过程中,我们有一个烟雾测试来确保任何shell脚本在磁盘和仓库中都设置了可执行标志。
在svn中这很容易。我们只需要检查包装函数返回的列表即可。
function vc_has_executable_flag() {
svn propget svn:executable $* | awk '{ print $1 }'
}
即使进行了详尽的搜索,我也没有找到任何git解决方案。
下面的函数返回相同的结果。
function vc_has_executable_flag() {
git update-index --chmod=-x $*
git reset $* | awk '{ print $2 }'
}
问题是,是否有更好的方法来完成它。如果没有,这种方法是否稳定?
当然,在这里我们可能会遇到竞态条件,但由于其预期用途是在专用构建机上使用,这对我们不是问题。
git ls-tree
显示文件的模式。对于可执行文件,它应该是100755
。 - Alexey Ten