我正在尝试为我的私有bugtracker写一个bzr post-commit钩子,但是我坚持使用post_commit的函数签名(local,master,old_revno,old_revid,new_revno,mew_revid).如何使用Python中的bzrlib从中提取分支的提交消息?
在svn领域长时间露营之后,我开始使用集市.我之前也有过使用cvs的经验,偶尔也会使用标签.
使用svn,一旦发布版本,就可以将trunk的svn副本执行到标记中,例如svn copy trunk tags/1.2.0.在集市中我创建了相同的存储库结构,但缺少bzr复制选项和bzr标记的存在让我思考.
事实是,我发现标签要么难以使用,要么无用.如果我使用标签,我基本上将我的主干作为唯一目录,当我达到里程碑时,我会标记它.然后,当达到新的里程碑时,我会继续开发和标记.这使以下任务复杂化:
因此,我在bzr中使用相同的svn repo结构,并且每次都执行主干的物理副本.这意味着在这种安排中我没有看到任何真正使用bzr标记命令.为什么我应该用版本号标记整个repo修订版,如果它包含每个版本的所有修订版?
有谁能请指出我在使用和理解bzr回购标签时做错了什么?
编辑
因此,据我所知,每个版本都有不同的bzr分支(独立分支,来自主干通过bzr分支).它就像svn,只是你没有把根目录放在存储库中.我还是没有真正看到标签的任何特殊原因,除了事实,如果你说foo-1.0.0 foo-1.0.1 foo-2.0.0 foo-2.1.0 trunk
假设我总是在分支之前标记版本,trunk将为所有这些版本添加标签,而foo-2.0.0在其标签中将包含foo-1.0.0,但不包括foo-1.0.1,因为它是从foo-1.0分支的0.0.
我仍然没有真正看到拥有和使用标签的必要性.我的标签隐含在我为该分支选择的目录名中.我对特定版本号并不感兴趣,我只是对它进入特定目录感兴趣.
我刚刚开始讨论集市,我发现结账功能对我的工作方式最有用 - 即我可以从"主副本"中进行c/o,进行一些开发然后将我的更改提交到新目录.然后,这将更新"主副本".
但是如果我正在研究(例如)两个项目,改变代码的不同部分呢?说:
~/master - master copy
bzr co master ./gui
bzr co master ./engine
Run Code Online (Sandbox Code Playgroud)
所以我在./gui目录中执行gui相关的东西,在./engine中使用底层内容.我应该如何兑现我的更改?如果我首先使用gui,然后是引擎,我想任何冲突都会在引擎中被标记出来?
有没有办法合并gui和引擎,然后只做一次提交到主副本?
为了使事情变得更复杂,如果我这样做怎么样:
bzr branch gui ./mouse
Run Code Online (Sandbox Code Playgroud)
现在我也许我一直在研究鼠标,但也在gui上.如果我想合并来自gui和鼠标的代码,然后提交到master,那么管理它的最佳方法是什么?或者,如果我也:
bzr branch gui ./keyboard
Run Code Online (Sandbox Code Playgroud)
如果我改变了gui,键盘和鼠标,我应该分层合并 - 即鼠标+键盘,然后将其与gui合并,然后将gui提交给master?
我希望很清楚我正在努力实现的目标!在此先感谢您的时间.
Bazaar有一个Launchpad伪协议(lp :),用户可以在远程分支中操作而无需写入完整的Launchpad位置,我正在寻找一种方法来创建我自己的伪协议,类似于这样(类似于GIT):
bzr remote my sftp://myuser@myserver.com/home/myuser/myrepo/
bzr push my:mybranch
bzr push my:otherbranch
bzr push my:anotherbranch
Run Code Online (Sandbox Code Playgroud)
...代替...
bzr push sftp://myuser@myserver.com/home/myuser/myrepo/mybranch
bzr push sftp://myuser@myserver.com/home/myuser/myrepo/otherbranch
bzr push sftp://myuser@myserver.com/home/myuser/myrepo/anotherbranch
Run Code Online (Sandbox Code Playgroud)
......这是屁股的痛苦.
我对bazaar.conf很感兴趣,但似乎只能为每个分支/回购设置一个全局推送位置.我看到的另一种方法是使用别名,但有同样的问题,在创建新分支时需要非常难看.
可以在不修改BZR代码的情况下执行此操作吗?这应该是显而易见的......
我理解困难bzr init-repo.
我想在他们自己的孤立存储库中拥有3个项目,在subversion中我将使用svnadmin create三次来创建它们.像这样:
svnadmin create MyProject
svnadmin create MyHomepage
svnadmin create MyDocuments
Run Code Online (Sandbox Code Playgroud)
以上将给出3个孤立的subversion存储库.
如何创建3个独立的共享集市存储库?
你会这样做吗?
bzr init-repo ./repo
bzr init ./repo/MyProject
bzr init ./repo/MyHomepage
bzr init ./repo/MyDocuments
Run Code Online (Sandbox Code Playgroud)
或者你会这样做吗?
bzr init-repo ./MyProject
bzr init ./MyProject/trunk
bzr init-repo ./MyHomepage
bzr init ./MyHomepage/trunk
bzr init-repo ./MyDocuments
bzr init ./MyDocuments/trunk
Run Code Online (Sandbox Code Playgroud)
或者还有另一种方式吗?
我在Bazaar中开发代码并希望在Github上发布它.实现这一目标的最佳方法是什么?
如果解决方案仅提供将Bazaar存储库中的一个分支推送到Github的方法,那就没关系.
我在集市上有一个开发库,我想将其转换为git并保持同步。我需要这样做,因为我将与不认识集市的人共享我的代码。
首先,我需要将集市仓库转换为git。我到处搜索,发现该博客提到了从集市转换为git的简单步骤。但是当我尝试运行bzr fast-export它时,它说没有这样的命令。
我尝试通过安装bzr fast-export sudo apt-get install bzr-fastexport。看来我实际上必须安装fastimport。所以我尝试了:sudo apt-get install bzr-fastimport。现在,我也可以运行bzr fastexport。并且以下命令成功完成了:
bzr fast-export | git fast-import
Run Code Online (Sandbox Code Playgroud)
现在我在git中有相同的仓库。但是如何保持同步?谷歌搜索后,我发现我必须使用git-bzr-ng,但是在github仓库上没有说明。任何想法如何?或其他任何选择?
我在emacs中进行大部分开发,并使用bzr进行版本控制.我推断这c-x v =相当于bzr diff,但我不清楚如何从emacs中提交,或者各种bzr命令如何映射到emacs键绑定.任何人都可以建议最好的方法或指向我的教程吗?
嘿我正在为我的代码使用集市,我想显示特定文件的更改历史,而不是显示整个集市回购的变化.我怎么能这样做?
执行bzr mv --auto删除的文件后,新文件被错误地选为移动文件,现在显示为重命名bzr status.如何更改此项以便将新文件再次标记为新文件(并将其删除为已删除)?