git - 什么相当于 git 中的 "svn propget svn:executable"?

标签 git svn executable

我们想将我们的版本控制从 svn 转移到 git。一切都很简单,除了一小部分。

在我们的发布过程中,我们进行了冒烟测试,以确保任何 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。 因此,使用简单的 grep,您可以检查 git 中的文件是否可执行。

检查函数看起来像这样:

function vc_has_executable_flag() {
    git ls-tree HEAD $* | grep '^100755 ' | awk '{ print $4 }'
}

关于git - 什么相当于 git 中的 "svn propget svn:executable"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28433294/

相关文章:

git - 更改现有项目版本控制系统

git - Git checkout 双破折号的含义

Git refs - 为什么它被称为头而不是分支?

java - 如何在 Eclipse Neon 中轻松地进行 Git 提交

sqlite - 重新创建 SVN wc.db

svn - 有没有办法在我进行时添加到 svn 日志?

android - 哪个是 Android SVN 项目的最佳结构?

compilation - 在 Julia 中制作独立的二进制文件?

java - 如何将具有依赖项的.class文件制作成可执行文件

python - 如何通过 Heroku 网站上的按钮执行 python manage.py django 管理命令