如何模拟“git stash”在化石中,bzr?
使用化石/bzr 时是否可以模拟“git stash”的行为?
基本上我对处理以下工作流程感兴趣:
- 在某些时候源代码树具有状态 X,它已提交
- 我继续编写新代码,我编写了一段时间,然后我看到 重构的机会
- 我现在无法提交 ,因为我已经开始进行的更改不是 已完成,它还不是原子的,
- 此时我会执行“git stash”,会保存当前的工作并且会 回到状态 X
- 我将进行重构并提交,源代码现在具有状态 Y
- 我会将状态 Y 中的源代码与存储中的代码合并,完成更改 使其原子化,然后再次提交,将源代码推送到状态 Z
我认为通常可以在使用时模拟这种情况 另一个 SCM,通过在状态 X 中分支代码而不是执行“git stash”, 在该分支中进行重构,然后将该分支合并回 主要一.但我知道分支并不总是一种廉价的操作。也是如此 有没有更好的特定方法最终依赖于特定的 化石/bzr的特点?
Is it possible to emulate the behavior of 'git stash' when using fossil/bzr?
Basically I'm interested in handling the following workflow:
- at some point the source code tree has state X, it is commited
- I proceed to writing new code, I write it for a while and I see the
opportunity of a refactoring - I can't commit at this point, because the change I've started to make is not
completed, it is not atomic yet - at this point I would do 'git stash', would save the current work and would
get back to state X - I would do the refactoring and commit, source code now has state Y
- I would merge source code in state Y with code in stash, complete the change
to make it atomic, then commit once again, pushing the source code to state Z
I think that generally it is possible to emulate this scenario when using
another SCM by branching the code in state X instead of doing 'git stash',
doing the refactoring in that branch, then merging the branch back into the
main one. But I'm aware that branching is not always a cheap operation. So are
there any better particular approaches that eventually rely on specific
features of fossil/bzr?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用
bzr shelve
和bzr unshelve
命令。Use
bzr shelve
andbzr unshelve
commands.您可以使用系统的
patch
命令。首先,通过将生成的差异存储为 .patch 文件来进行“存储”:
$scmtool diff > working.patch
然后重置您的工作目录。
稍后,应用补丁:
<代码>补丁-p1 --dry-run <稍后
然后就可以了,删除
--dry-run
以真正应用补丁。You can use the
patch
command of your system.First you make a "stash" by storing a generated diff as .patch file:
$scmtool diff > working.patch
then reset your working directory.
later, apply the patch with:
patch -p1 --dry-run < working.patch
and then this works, remove the
--dry-run
to apply the patch for real.stash
命令最近在 Fossil 中实现。您必须检查最新的化石可执行文件,您将在可用命令列表中看到stash
。以下是有关其语法的网络帮助的链接。
The
stash
command was implemented in fossil recently. You got to check out latest fossil executable you will seestash
in the available command list.Here is the link to the web help on its syntax.