在编写存储在Subversion代码库中的软件时,我经常修改一些文件,然后注意到我想为主要工作做一些准备工作。例如,在实现新功能时,我注意到一些重构可能会对我有所帮助。
为了不混淆两个不相关的更改,在这些情况下,我想“隐藏”我的更改,即恢复到存储库版本,做一些其他更改,提交这些更改,然后“取回”我的更改。
git-stash正是允许这样做的。有没有什么方法可以通过Subversion直接实现,也可以通过一些插件或脚本实现。Eclipse插件也不错。
发布于 2009-10-12 12:35:56
您可以使用svn diff
将当前更改存储到补丁文件中,然后恢复您的工作副本:
svn diff > stash.patch
svn revert -R .
在实现了准备功能之后,您可以使用patch实用程序应用您的补丁:
patch < stash.patch
正如其他人所指出的,这将不适用于svn:properties
和树操作(添加、删除、重命名文件和目录)。
二进制文件也会产生问题,我不知道patch (或者本例中的TortoiseSVN )是如何处理这些问题的。
发布于 2009-10-12 12:34:48
最简单的方法是使用临时分支,如下所示:
$ svn copy ^/trunk ^/branches/tempbranch
$ svn switch ^/branches/tempbranch
$ svn commit -m "Stashed"
$ svn switch ^/trunk
$ ... hack away in trunk ...
$ svn commit -m "..."
$ svn merge ^/branches/tempbranch .
$ svn rm ^/branches/tempbranch
$ ... continue hacking
这可以(也许应该)放在一个脚本中,如果更有规律地完成的话。
发布于 2010-08-03 03:18:39
我不知道只用svn就能做到这一点的简单方法。老实说,我建议使用git-svn
制作一个git repo,作为svn的工作副本,并使用git stash
。只需将git pull
替换为git svn rebase
,将git push
替换为git svn dcommit
,您实际上可以保留90%的git工作流程,并且仍然可以与svn服务器通信。
https://stackoverflow.com/questions/1554278
复制相似问题