Svn 移动到主干/分支/标签Subversion布局,不同状态下的不同工作副本
我们的网站开发模式如下:Svn 移动到主干/分支/标签Subversion布局,不同状态下的不同工作副本,svn,Svn,我们的网站开发模式如下: 开发人员在他们的工作站上工作新的东西,并提交给一个中央存储库 post-commit钩子会自动更新测试web服务器上此repo的签出,以便他们可以看到更改的效果 当一项功能被认为足够稳定时,单个文件将在生产web服务器上启动 测试和生产服务器上签出副本中的文件从未被修改,因此也从未用于向repo进行提交 诚然,这可以做得更好,但这一过程开始很小,并逐渐发展到这一点。然而,我们现在想介绍“标准”主干/分支/标签回购组织 解决了我们最初的顾虑,现在我们在repo中有了新
- 开发人员在他们的工作站上工作新的东西,并提交给一个中央存储库
- post-commit钩子会自动更新测试web服务器上此repo的签出,以便他们可以看到更改的效果
- 当一项功能被认为足够稳定时,单个文件将在生产web服务器上启动
- 测试和生产服务器上签出副本中的文件从未被修改,因此也从未用于向repo进行提交
svn开关
将获得所有文件的头版本,我们需要当前版本
我看到您可以将-r BASE
与svn开关一起使用,但当我这样做时,我得到:
$ svn switch -r BASE https://old_URL/trunk
svn: 'https://old_URL' is not a working copy
svn: 'https://old_URL' does not exist
有什么建议吗?试试@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...]
更新
请注意,分支
、标记
和主干
系统只是一种命名约定。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
),并使live服务器指向其最新版本。当您想要推动新的更改时,您可以合并到该分支。我承认我不太确定您的布局。。。trunk
是否已存在于BASE
版本中?除非移动到更新的版本(创建后),否则无法切换到主干。不,trunk
现在已经创建,所以BASE
中的所有内容都在trunk
创建之前…关于发布
分支的最后一个建议非常好,我将说服团队使用它。然而,我现在仍然不能解决我的迁移问题…我想我不太擅长解释这个问题。最后,答案是使用svn export
在生产服务器上复制“工作树”,创建新分支,并递归添加所有文件。谢谢你的帮助!那么,您是否删除了所有文件的历史记录?