来自svnversion
文档:
[adrdec@opsynxvm0081 common_cpp]$ svnversion --help usage: svnversion [OPTIONS] [WC_PATH [TRAIL_URL]]
为工作副本路径生成紧凑的“版本号” WC_PATH。例如:
$ svnversion . /repos/svn/trunk 4168
如果工作副本是,则版本号将是单个数字 单个修订,未修改,未切换且具有URL 匹配TRAIL_URL参数。如果工作副本不正常了 版本号将更复杂:
4123:4168 mixed revision working copy 4168M modified working copy 4123S switched working copy 4123P partial working copy, from a sparse checkout 4123:4168MS mixed revision, modified, switched working copy
答案 0 :(得分:3)
此解决方案检测工作目录中的更改,如svnversion所做的。
def get_version(self, path):
curdir = self.get_cur_dir()
os.chdir(path)
version = self.execute_command("git log --pretty=format:%H -n1")[self.OUT].strip() #get the last revision and it's comment
status = self.execute_command("git status")[self.OUT].strip() #get the status of the working copy
if "modified" in status or "added" in status or "deleted" in status:
version += self.modified
os.chdir(curdir)
return version
def execute_command(self, cmd_list):
proc = subprocess.Popen(cmd_list, stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
rc = proc.returncode
return rc, out, err
答案 1 :(得分:1)
我对SVN并不熟悉,但据我所知,SVN以简单数字的形式识别修订版:1,2,3 ... Git并没有很好地翻译,因为它使用SSH哈希来识别修订版(在Git世界中称为'提交')。但是,使用git log
来获取此信息仍然非常简单:
git log --pretty="format:%h" -n1 HEAD
这将在repo中打印当前已检出的提交(这是HEAD的内容)。或者,您可以使用HEAD
(或任何其他分支)替换命令中的master
以获取该分支的最后一次提交,而不是代表您的工作目录的那个。此外,如果您需要完整的SHA1,请将上面的%h
替换为%H
。您还可以阅读git-log
联机帮助页,了解有关--pretty
格式的更多信息。
此外,您可以在.gitconfig
中添加别名,以便在任何地方执行此操作。将以下行添加到~/.gitconfig
(如果您的[alias]
已有该部分,请不要.gitconfig
):
[alias]
rev = "git log --pretty='format:%h'"
现在,只要您在Git仓库中,并希望查看当前版本,只需输入git rev
。