我曾经参与过类似的问题。一个例子:How can I get the svn revision number in PHP?如何在我的网站上获得Bazaar版本的文件?
但是今天我正在处理一个用BZR管理的项目。我需要获取特定文件的bazaar版本,并在我们的网站上发布该数字,以便在文件更新时自动更新。
该网站全部都是Python,所以我可以在后台阅读文件,但如果可以的话,我宁愿选择更为被动的方法。
我曾经参与过类似的问题。一个例子:How can I get the svn revision number in PHP?如何在我的网站上获得Bazaar版本的文件?
但是今天我正在处理一个用BZR管理的项目。我需要获取特定文件的bazaar版本,并在我们的网站上发布该数字,以便在文件更新时自动更新。
该网站全部都是Python,所以我可以在后台阅读文件,但如果可以的话,我宁愿选择更为被动的方法。
一种方法是有一个脚本,推到你的网站,version.py这个脚本的情况下更新或类似的东西:
# update version
echo "VERSION = \"$(bzr revno)\"" > version.py
# push to website
rsync ...
# tag
bzr tag --force deployed-version
如果您需要获得其中文件被修改的最新版本,你可以使用DOIT以下命令:
bzr log -l1 --line <file> | cut -f1 -d:
在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()
的问题,我与所有的t发现他的bzr命令是他们只显示最新的转速数字。例如,如果有一个文件我在init中添加它之后没有触及,如果我运行'bzr revno file',则返回100'',则返回'101'。我想在这个例子中修改最后一个文件:'1'。 – Oli
bzr revno显示整个树的最后修订版号,而不是单个文件的版本号。 – jelmer