我们为网站提供以下开发模型:
svn up
当然,这可以做得更好,但这个过程开始很小,并逐渐演变到这一点。但是我们现在想要引入“标准”主干/分支/标签repo组织。
This question解决了我们最初的担忧,现在我们在repo中有了新的目录结构,测试Web服务器已经切换到使用trunk。问题是我们不能对生产服务器做同样的事情,因为svn switch
会让我们对所有文件进行HEAD修订,我们想要当前的修订。
我看到你可以-r BASE
与svn switch
一起使用,但是当我这样做时,我得到:
$ svn switch -r BASE https://old_URL/trunk
svn: 'https://old_URL' is not a working copy
svn: 'https://old_URL' does not exist
有什么建议吗?
答案 0 :(得分:1)
尝试使用@PEGREV
语法:
C:\>svn help switch
switch (sw): Update the working copy to a different URL.
usage: 1. switch URL[@PEGREV] [PATH]
2. switch --relocate FROM TO [PATH...]
请注意,branches
,tags
和trunk
系统仅仅是一个命名约定。 Subversion中的这些项目并没有什么特别之处:它们只是目录。所以你有这个:
r1: Add: /site/
Add: /site/css
Add: /site/img
Repo:
/site/
/site/css
/site/img
r2: Add: /branches
Add: /tags
Add: /trunk
Repo:
/branches
/site/
/site/css
/site/img
/tags
/trunk
r3: Copy: /site/ to /trunk
Delete: /site/
Repo:
/branches
/tags
/trunk
/trunk/site/
/trunk/site/css
/trunk/site/img
如果您的工作副本指向/site r1
,则无法切换/trunk/site r1
:该路径在r1的目录树中不存在。
一旦您决定发布新版本,让我们说r4,您就可以切换到/trunk/site r4
;不是之前。
恕我直言,您应该创建一个分支(例如live
或release
)并使实时服务器指向其最新版本。当您想要推送新的更改时,可以合并到该分支中。