我将创建一个分支来处理我的代码,因为主干以难以想象的方式搞砸了(但这不是问题)。如何定期备份我创建的分支。它将位于我的公司服务器上,我不确定定期将分支检出到新文件夹是否相当于“备份我的分支”?
这与只是去 Repo 并将文件夹复制到我的桌面有什么不同吗?.svn 文件是否包含我保留分支历史所需的所有内容,并且能够恢复到以前的版本?
谢谢!
更新 **
我问的原因是因为我不知道有一天是否有人会来删除分支。
我将创建一个分支来处理我的代码,因为主干以难以想象的方式搞砸了(但这不是问题)。如何定期备份我创建的分支。它将位于我的公司服务器上,我不确定定期将分支检出到新文件夹是否相当于“备份我的分支”?
这与只是去 Repo 并将文件夹复制到我的桌面有什么不同吗?.svn 文件是否包含我保留分支历史所需的所有内容,并且能够恢复到以前的版本?
谢谢!
更新 **
我问的原因是因为我不知道有一天是否有人会来删除分支。
无需备份分支,Subversion 是一个版本控制系统。当发生更改时,您知道是谁做的,他们何时做的,他们改变了什么,您甚至可以撤消他们的更改。这就是版本控制系统所做的。
因此 Sketh Chobo:
更新**
我问的原因是因为我不知道有一天是否有人会来删除分支。
在 Subversion 中,您所做的一切都是可逆的。即使您删除了一个分支,您也可以通过在删除之前将其从修订版中复制回来来取回它。
例如,假设您的分支在修订版 100 中被删除:我们将使用@99
$ svn cp -r99 svn://svn/branches/my_branch@99 svn://svn/my_branch
而且,现在它回来了!
如果你真的想保护你的分支,你可以使用 pre-commit 钩子来防止人们修改文件夹和文件。我有一个我在这里使用的。
你可以这样想你的 svn 服务器:
每次更改服务器的状态时,它都会创建该状态的快照,并用修订号标识。
任何时候您想引用该状态时,您都可以查看该修订号。
现在,这并不是它的工作原理——如果它为每次更改创建一个完全独立的快照,那么在空间方面(也可能在时间方面)效率将非常低。但是,它旨在让您像这样做一样操作,并且确实为您重新创建它。
所以你的备份包括这样做
打开一个文档(我们称之为 backup.txt)。
在存储库上执行 SVN INFO 以获取当前修订号
写下“备份”,你的日志上写着“我在这个日期做了备份。要获得备份状态,我只需检查日志中的修订。”
基本上,您所要求的不仅是 subversion 内置的,而且确实是subversion 的目的。:)
.svn 文件是否包含我保留分支历史所需的所有内容,并且能够恢复到以前的版本?
不会。.SVN 文件夹不保留任何历史记录。所有历史记录都在服务器上的存储库中,这就是您应该备份的内容。
你真的不需要备份你的分支。修订控制保留所有修订。任何时候,你想签出一个版本,你可以用版本号运行checkout 命令
svn checkout -r 911 svn://url/to/file/or/dir/tobe.checked/out to/this/location/on/my/machine
参考:http ://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.checkout.html