可能重复:
"分支","标签"和"主干"真正意味着什么?
Subversion中的trunk,branch和tag是什么?使用它们的最佳实践是什么?
我可以在Visual Studio 2008中使用哪些工具进行Subversion ?
上周,我在离开城镇周末之前对当地分公司进行了一些修改.今天早上我想将所有这些更改推迟到公司的Svn存储库,但是我在一个文件中遇到了合并冲突:
提交期间合并冲突:您的文件或目录"build.properties.sample"可能已过时:版本资源与事务中的资源不对应.请求的版本资源已过期(需要更新),或者请求的版本资源比事务根更新(重新启动提交).
我不确定为什么我会得到这个,但在尝试dcommit之前,我做了一个git svn rebase.那"覆盖"了我的承诺.为了从中恢复,我做了一个git reset --hard HEAD @ {1}.现在我的工作副本似乎是我期望的那样,但我不知道如何通过合并冲突; 实际上我找不到任何可以解决的冲突.
任何想法将不胜感激.
编辑:只是想说明我在本地工作.我有一个引用svn/trunk(远程分支)的trunk的本地分支.我的所有工作都是在本地干线上完成的:
$ git branch
maint-1.0.x
master
* trunk
$ git branch -r
svn/maintenance/my-project-1.0.0
svn/trunk
Run Code Online (Sandbox Code Playgroud)
类似地,git log当前在我的本地主干上显示了自上次提交Svn ID以来的10次提交.
希望能回答几个问题.
再次感谢.
使用Subversion的Version Control为(单项目)存储库推荐以下布局(由此问题补充):
/trunk
/tags
/rel.1 (approximately)
...
/branches
/rel1fixes
Run Code Online (Sandbox Code Playgroud)
与(或许)更注重过程的安排相比,这种安排的相对优点是什么?:
/development
/current
/stable
/qa (maybe)
...
/production
/stable
/Prod.2
/Prod.1
/vendor
/Rel.5.1
/Rel.5.2
Run Code Online (Sandbox Code Playgroud)
请注意,我正在考虑内部部署,而不是构建产品.
免责声明:虽然我是Subversion用户,但我从未在真实的环境中部署它.
如果可以的话,我需要在这里进行健全检查,非常欢迎任何关于纠正/改变以下内容的想法!我们已经使用我们的SVN进入了最后阶段,并试图通过放置Trunk/Release系统来纠正它.
我们开发了一个大型网站,我们将它们全部存储在SVN中.以下是我们的想法:
所以我们把所有这些都放在了自己的位置.除了它不工作和继承人为什么.
我们同时处理很多不同的功能/修复/问题并且它们并没有很好地检查功能完整(但总是至少工作).然后,有时你必须等待客户签字.结果,你最终得到了"准备就绪"的修订版,其中散布着"仍然在工作中"的版本.这意味着已完成的修订不会按顺序合并但不按顺序合并.我认为SVN可以处理这个,聪明的小东西,但显然不是.
下面是一个例子:
这导致网站被破坏,而Release分支几乎没用.
所以我们尝试了其他一些想法,例如将Release恢复为"Latest",然后按顺序合并所有修订版1,2和3.这个工作正常,直到我们的版本4还没有为现场做好准备,修订版5就是.突然间,我们又遇到了完全相同的问题!
好的,拿三个.恢复到最新,合并修订版5,然后将任何更新重新发送回Head.树冲突嘉豪!所以这不是没有.
我破获年底建成这一切manaually但它不是我想要做定期,最好我想剧本我们的部署,但不能同时发行是在这样一个烂摊子.
救命!我们做错了什么?我似乎无法找到任何解决方案来解决这个问题,即在发布中需要不同的顺序修订.如果它不可能那么好但是我们的意思是如何让事情变得容易.我们不能分支每一个变化,该网站需要30分钟+检查它将花费太长时间.
旁注,我们正在使用TortoiseSVN,所以我们可以在任何答案中将命令行示例保持在最低限度吗?
最新版本的TSVN和SVN版本1.6因此我们有时髦的合并跟踪等.
编辑:一篇优秀的博客文章,处理开发/发布周期(尽管使用GIT,但仍然相关),如果他们发现这个问题很有趣,那么每个人都想阅读它.(http://nvie.com/git-model)
编辑2:我写了一篇博客文章,介绍如何在你的网站上展示你正在研究哪个分支,其他人问我这个问题(http://www.offroadcode.com/2010/5/14/which-svn-branch-你在工作.aspx).希望有所帮助.与此同时,我们正在寻找窑,并希望下个月能够切换(gulp!)
我正在使用Zend Studio 6.1 for Eclipse,它与Subversive插件捆绑在一起.
我的回购布局是:
/trunk/
/branches/
/tags/
Run Code Online (Sandbox Code Playgroud)
我的应用程序代码位于:
/trunk/application
Run Code Online (Sandbox Code Playgroud)
我正在尝试添加一些视图模板:
/trunk/application/views/tags/index.tpl
Run Code Online (Sandbox Code Playgroud)
但Subversive不会让我提交该文件夹中的任何文件.它给我的信息是:
"你要修改存储库中的标记.你想继续吗?"
所以我说"不".这似乎让我的'tags'文件夹与SVN的标签概念混淆.
我无法重命名该文件夹,因为我使用的框架在控制器和视图之间强制执行严格的命名约定.我有一个tagsController,所以我的视图必须在/ views/tags中
我可以将控制器重命名为"标签"之外的其他东西,但这很糟糕,因为标签是标签,而不是schmag;)
关于如何解决这个问题的任何想法?
我开始了一系列重大变化,触及了应用程序的许多不同领域,需要更改数据库模式,我们的对象和表示代码.我从rev.1101开始你可以认为这是一个完美的案例,可以创建一个分支,以便稍后在测试和完成后合并并集成回Trunk.
但我没有创建一个新的分支.我一直在研究Trunk.

Trunk现在处于rev.1116并且我处于一个不值得羡慕的(?)位置,我必须对15个版本的修订版执行一些错误修正,这是当前版本的生产,然后发布bugfixed"rev.1101 + bugfixes "没有任何来自转速1102-1116的工作的生产.
问题:如何"恢复"主干并将所有最近的更改移动到分支? 我现在从Trunk中的内容创建一个分支,然后成为/ Branches/MajorChangeSet,然后将Trunk恢复为rev.1101,将其视为现在正式的Trunk并开始处理那里的错误修正?

更新:我遵循以下ChrisH推荐的程序(根据上面的模型),我们现在状态良好.我们一直在通过修复和次要功能增强来更新"rev.1102产品".这些都是无痛的,很容易合并到主干中,以确保这些变化也成为我们新的开发工作.谢谢大家!
虽然我正在努力学习如何使用svn:externals,但我很难理解这些术语的不同之处.他们有什么不同?
工作副本和结帐
有时,构建一个由许多不同的签出组成的工作副本是有用的.(来源)
属性
在Subversion中,使用svn:externals 属性在组中声明外部定义.(来源)
知识库
因此,分支和标签可以非常快速地创建,并且几乎不占用存储库中的额外空间.(来源)
例如,您可能希望不同的文件或子目录来自存储库中的不同位置,或者可能来自不同的存储库.(来源)
项目
为项目中的文件夹设置svn:externals属性.(来源)
我猜工作副本是一组项目文件,结帐是项目文件或主干文件的工作副本.属性听起来像一个文件但它可能只是一个定义指令,但我不确定.我也很难理解存储库和主干之间的差异.如果我说"用户下载存储库.",则类似于"用户下载主干文件".
对不起,这一定是一个非常基本的英文问题!
您是否始终遵循将分支,标签和主干目录放在Subversion存储库顶层的惯例?最近,我已经停止了打扰,并没有发生任何不好的事情(还)!
如果需要创建目录树,应该可以移动目录树.我以后会惹麻烦吗?
svn ×7
branch ×3
git ×2
tortoisesvn ×2
conventions ×1
eclipse ×1
git-branch ×1
git-svn ×1
git-tag ×1
subversive ×1
tags ×1
terminology ×1
trunk ×1
zend-studio ×1