【问题标题】:How can I get the Bazaar version of a file on my website?如何在我的网站上获取 Bazaar 版本的文件?
【发布时间】:2011-11-27 04:42:00
【问题描述】:

我之前曾参与过与此类似的问题。一个例子:How can I get the svn revision number in PHP?

但是今天我正在处理一个使用 BZR 管理的项目。我需要获取特定文件的集市版本,并在我们的网站上发布该图,以便在文件更新时自动更新。

该网站全部使用 Python,因此我愿意在幕后阅读文件,但如果可用,我更喜欢更被动的方法。

【问题讨论】:

    标签: python version-control bazaar


    【解决方案1】:

    如果您需要获取文件被修改的最新版本,您可以使用以下命令:

    bzr log -l1 --line <file> | cut -f1 -d:
    

    【讨论】:

      【解决方案2】:

      在 Python 中:

      from bzrlib.branch import Branch
      b = Branch.open(location_of_your_branch)
      b.lock_read()
      try:
          # Retrieve the contents of the last revision
          t = b.basis_tree()
          revid = t.get_file_revision(t.path2id(your_filename))
          print ".".join([str(x) for x in b.revision_id_to_dotted_revno(revid)])
      finally:
          b.unlock()
      

      【讨论】:

        【解决方案3】:

        一种方法是有一个脚本推送到您的网站,这个脚本案例更新 version.py 或类似的东西:

        # update version
        echo "VERSION = \"$(bzr revno)\"" > version.py
        # push to website
        rsync ...
        # tag
        bzr tag --force deployed-version
        

        【讨论】:

        • 我发现所有 bzr 命令的问题是它们只显示最新的转速。例如,如果有一个文件在初始化时添加后我没有接触过,100 转后如果我运行bzr revno file,它会返回101。我想要该文件被更改的最后一个版本,在这个例子中:1.
        • bzr revno 显示整个树的最后一个修订号,而不是单个文件。
        猜你喜欢
        • 2015-12-27
        • 1970-01-01
        • 2020-06-04
        • 1970-01-01
        • 2013-02-06
        • 2018-03-04
        • 1970-01-01
        • 2012-04-12
        • 2018-05-11
        相关资源
        最近更新 更多