Mercurial有一种打印根目录(包含.hg)的方法
hg root
Run Code Online (Sandbox Code Playgroud)
在git中是否有类似的东西来获取包含.git目录的目录?
我有一个git post receive钩子,它将在我的构建系统上触发构建.我需要在钩子脚本中创建一个"$ repo-name + $ branch"形式的字符串.
我可以解析分支,但是如何从git获取存储库名称?
谢谢!
我正在为一些同事编写一个脚本,用于他们的Git存储库,我对如何可靠地找到repo工作树的根目录感到困惑:
通常,如果当前目录位于工作树内,则命令...
git rev-parse --git-dir
git rev-parse --show-toplevel
Run Code Online (Sandbox Code Playgroud)
...将分别返回.git目录和工作树的根.然而,如果当前目录恰好是里面一个.git目录,那么只有第一个命令的作品.该命令git rev-parse --show-toplevel不显示工作树的顶层(至少,不适合我,在Linux上使用git 1.8.4.4).
假设git rev-parse --is-bare-repository的回报false,我通常会猜的父目录git rev-parse --git-dir或者是工作目录(或地方工作目录内),但如果用户GIT_DIR设置该.git目录不是工作目录里面,这是行不通的.(例如,当用户使用子模块时,他们的GIT_DIR可能不在他们的工作树中.)
我发现令人困惑的是,当在a内运行时GIT_DIR,git rev-parse --show-toplevel不会输出任何错误消息并返回0:
$ cd $(git rev-parse --git-dir); git rev-parse --show-toplevel ; echo $?
0
Run Code Online (Sandbox Code Playgroud)
而在某个地方运行相同的命令显然不是git存储库会返回错误代码:
$ cd /; git rev-parse --show-toplevel ; echo $?
fatal: Not a git repository (or any of the parent directories): .git
128
Run Code Online (Sandbox Code Playgroud)
如果有一种方法可以找到工作树 …
我正在尝试在 python 中开发一个rollin.py具有以下要求的 Gatekeeping 脚本:
假设用户将从rollin.py他本地 git 克隆区域内的任何地方启动脚本以将他的提交推送到主存储库
现在,rollin.py脚本将
现在在rolloin.py脚本中,我将如何检查存储库名称和用户的 git clone 路径?(因为用户可以rolloin.py从他当地的任何地方启动脚本)
是否有任何现有的功能或方法可用?否则,我正在考虑实现反向递归搜索cwd以定位 .git,然后从它的配置文件中找到 url。