【问题标题】:How to compare local and repository SVN revisions?如何比较本地和存储库 SVN 版本?
【发布时间】:2017-02-21 11:30:10
【问题描述】:

我有一个用 Python 编写的程序。 我使用 SVN 为用户部署更改。 在某些情况下,SVN 会卡住,更改不会下载到用户计算机。在这种情况下,我需要手动执行SVN CLEANUP。问题是我不知道哪个站有哪个版本。因此用户继续处理导致问题的旧版本。

我想写一个代码,它会在程序午餐时将本地 SVN 修订版与服务器进行比较,如果不匹配,则会出现一条消息。

我已经编写了获取服务器版本的代码:

import re,subprocess
svn_info = subprocess.check_output("svn info svn_address")
print (re.search(ur"Revision:\s\d+", svn_info)).group() 

但我不明白如何获取本地修订版以便进行比较。

如果我转到 SVN 本地文件夹并执行以下操作:

svn info

我看到了本地版本。但我不知道如何在 python 代码中访问这些数据。

有什么想法吗?

【问题讨论】:

    标签: python svn


    【解决方案1】:

    我建议使用“维护的”python SVN 包装器,而不是尝试自己解析外部命令的文本结果。看看here

    【讨论】:

    • 我认为不需要为两个整数安装一个包。打印只是给我的..它不会在代码本身中....我需要一种方法来了解本地 svn 修订版。你能帮忙吗? :)
    • 是的,你是对的,这只是个人观点,没有必要就这么小的设计问题进行无休止的辩论;-) 回答你的问题,我相信 svn info (没有 svn address) 给出本地版本。但是我现在有一段时间没有使用它,所以我可能会弄错。编辑对不起,刚刚看到你编辑了你的问题...
    • svn info 确实给出了答案,但是当我手动执行它时它可以工作,因为我在正确的目录中......如果我在 python 中执行它会告诉我:svn:警告:'。'不是工作副本
    • 好的。所以你可以试试 os.chdir()。或者,您可以尝试使用 svn info subprocessees 管道 cd /youpath :stackoverflow.com/questions/13332268/… 我发现第一个更清洁。
    • os.chdir() 对我没有帮助...我不想更改任何路径...一切正常,只要我尝试访问信息...关于链接我不知道如何使用它?
    【解决方案2】:

    两年后我想要同样的东西。我制作这个是为了在 python 中获取本地 SVN 版本:

    导入操作系统 getSVNversion=os.popen('svnversion .').read() revision=''.join(c for c in getSVNversion if c.isdigit()) 打印(修订)

    显然不是最佳解决方案或“维护”解决方案,但它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      • 2011-06-23
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多