我在服务器上,/ var / svn / repository中有一个SVN存储库,服务器上有几个工作副本,一个'staging'和一个'live'。本地开发人员工作副本以正常方式使用'svn commit'发送到服务器。
我在服务器上有几个简单的双行脚本,它们会转到相应的位置并执行“svn update”以将内容刷新到最新的存储库版本。
uplive:
cd /usr/local/lib/Catalyst/proj/trunk
svn up && echo 'go to proj.example.com to see changes'
舞台后部:
cd ~/Catalyst/svn/proj
svn up && echo 'go to proj.example.com:3001 to see changes'
我想让几个伴侣脚本“在舞台上”和“向下”,但我在svn中找到的最接近的东西需要修订号的变量参数: 我发现的例子包括
之类的内容$ svn merge -r HEAD:nnnn。
或
$ svn merge -c -303 http://svn.example.com/repos/calc/trunk ---将r303反向合并为'integer.c':
我想用一种简单的方法来做“D'哦!”函数,即撤消最后一个svn更新,可以通过脚本调用:例如ssh theServer frontstage撤消上一次'svn up'并将live / staging系统返回到之前的rev。
毫无疑问,有可能从SVN获得最新版本, 拿走一个,并要求SVN进行反向合并,但似乎想要这样做是显而易见的事情我有点惊讶没有更快/更简单的方法。
答案 0 :(得分:4)
如何使用以下命令对上一版本进行更新:
svn up -r PREV
答案 1 :(得分:2)
更新工作副本绝不是确定性操作。您的工作副本可以在之前和之后处于任何随机状态。如果要撤消更新,则需要先创建备份。像tar + gz这样简单的东西就足够了。
如果您想进行仅svn可预测的更新,您可能必须在更新之前创建分支并将内容提交/合并。当然,这不会照顾非版本化的东西。
答案 2 :(得分:1)
我认为您真正想要的是与git stash
类似的东西 - 能够存储您的任意工作副本更改并将其与存储库中的更新隔离。
这是一种方法:
http://www.benrady.com/2009/09/svn-replacement-for-git-stash.html
和一些脚本: