我第一次使用svn来维护Wordpress的自定义版本。我在eclipse中使用了subclipse插件。现在是将Wordpress最新版本中的更改与我的自定义代码库合并的时候了。 我曾尝试创建一个分支并在那里添加新的Wordpress版本,然后执行合并。但是没有改变。 有人可以通过像这样的项目设置来引导我吗?我担心我缺少一些基本的东西。 谢谢。如何使用subclipse合并代码更改?
回答
转换WordPress的项目卖主分支程序
如果您正在使用SVN的第一次,我想你还没有开始用干净的WordPress的副本,从那里支和编辑的分支版本,是吗?;)
如果是这样,您可能会遇到问题。
背景
与“正规的diff” SVN合并不比较左侧码/文件夹右侧的代码/文件夹。 虽然svn合并如果没有找到历史记录可能会回落到类似diff的机制,但我不建议依赖它,因为它可能非常容易出现不必要的冲突。
SVN合并用于重现已记录在SVN历史记录中的更改。这就像告诉一位画家:“嘿,你知道在山上添加那棵树之前,这张照片是怎么看的?这棵树太棒了!看这里我已经复制了同样的基本图片,但现在有了日落。树,但在这张日落的照片上?“ 画家可能能够复制树,因为他知道他是如何做到这一点。他甚至可能在某个地方吃草稿。
图片,这是wordpress。画家,你的svn指挥它。树是你的修改。现在以日落为主题的图片是更新的wordpress版本。
你最有可能做的是复制wordpress香草到你的svn,修改它,使用它。
要坚持图片的例子,历史将包含像“复制全图,添加树,添加叶子”的命令。
现在你带来一个新版本的wordpress,一个新的图片可以说,除了你的旧修改版本以外。问题是,你的人类和智能知道它的相同的图片,即使新的版本是不同的,你只需要复制树,SVN不具备这些知识。对于SVN你的wordpress 1.7文件夹(修改)完全不同于wordpress 1.8。它们没有历史记录,因为SVN日志中没有任何内容表示它。 SVN是一个官僚主义者,不是吗? ;)
现在人们在允许svn维护wordpress 1.7,修改后的1.7和新版本1.8之间的历史联系时,他们是如何在作品开始时使用分支的。
所以,你将在一个“vanilla-wordpress”文件夹中使用干净的1.7 wordpress开始,将它存储在svn中,并将其分支到“my-modified-wp”中。直到你想从上游更新wordpress的时候,你才会破解它。然后,人们下载最新的wordpress副本覆盖他们的vanilla wordpress并合并所产生的变更集。
在图片示例命令将这些:
"Buy original picture
copy original picture as my picture
draw tree on my picture
draw sunset on original picture (someone else did that for you, aka update)
*reproduce* sunset on my picture too"
您可以清晰地重现日落,因为你知道被应用在日落前的图片是什么样子。
虽然你的问题是,你没有开始这种方式,但立即编辑您的下载WordPress。所以你的新版wordpress不能轻易与你的修改版联系起来。
一个建立的历史关系
download the **exact** wordpress version you started your project with
Put it into /vendor/wordpress/current
invoke "svn copy http://svnserver.tld/repositorypath/vendor/wordpress/current http://svnserver.tld/repositorypath/vendor/wordpress/1.7.1" to tag the import.
invoke "svn copy http://svnserver.tld/repositorypath/vendor/wordpress/current http://svnserver.tld/repositorypath/branches/my-new-modified-wordpress" or whatever your project/WP-edition is called.
方式现在到了招部分 滚动回你的“老 - 修改 - WordPress的”的SVN的日志。你没有分支的那个。您必须在您初次导入旧wordpress后找到第一个修订版。一旦你发现修改你把它的编号,并在这两个命令的第二个使用它:
change into a local checkout of "/branches/my-new-modified-wordpress"
issue "svn merge -r **4**:HEAD http://svnserver.tld/repositorypath/my-**old**-modified-wordpress". If 4 was the first revision during which you made own modifications.
你告诉SVN如下:“拿修订4,并且现在重现之间在我的旧的分支的所有更改他们在我的新分支。“
如果一切正常,你应该有两个相同的分支。旧的修改和新的修改,略有不同,新修改与您的“/ vendor/wordpress/current”分支有着坚实的历史。
这个祖先可以让你contunously做到以下几点:
Download the wordpress version you wish to upgrade too and **overwrite** /vendor/wordpress/current
invoke "svn copy http://svnserver.tld/repositorypath/vendor/wordpress/current http://svnserver.tld/repositorypath/vendor/wordpress/1.9.3" to tag the new version.
change into local checkout /branches/my-new-modified-wordpress
issue "svn merge http://svnserver.tld/repositorypath/vendor/wordpress/current"
profit
这个过程我用更少的storystelling媒体链接描述的链接。但在它可以工作之前,你必须建立分支之间的祖先关系。
Subversion svn:externals file override?
我知道它已经被很多阅读:)。如果你打算做抽象绘画,想想“改变命令”没有说明,你会没事的。
C
这是假设你合并从branch
(包含最新版本的WordPress)到trunk
(您的自定义代码库)。
(请确保你犯你需要为
branch
一切。)Team --> Switch to another branch/tag/revision...
你的工作副本trunk
(该目标的合并操作的),并决心而来的任何冲突在这一点上增加。Team --> Merge
打开一个对话框,您将在其中执行合并操作。将“From”URL更改为引用branch
(合并操作的源,即要合并到工作副本中的内容)。 “从修订”应该指向branch
的修订版本,您希望合并操作从“开始” - 通常是上一次合并的修订版本,从branch
到trunk
(或者最有可能是您的案例的头版修订,如果您真的想要合并刚刚在branch
中的最新更改)。将“修改”设置为指向
branch
(=修订版本)中的最新修订版。此时您已准备好执行合并 - 使用
Dry run
命令可以预览合并过程中将发生的情况,并且Merge
将执行实际合并。合并操作完成后,您需要确保对您的工作副本执行的所有更改都正常并解决所有冲突。
当您完成解决冲突并查看更改后,在单个提交操作中将更改提交到
trunk
。为了您的方便,强烈建议您添加一个提交消息,在其中明确说明此提交的用途(=将合并修订从X到Y从branch
到trunk
,目的是什么等)。
希望这会有所帮助。
这真的很有用Tommi。我会尝试并报告回去...... – Lemmy 2010-09-13 11:38:31
很高兴听到这个消息。如果这个答案恰好解决了您的问题,请将其标记为正确的答案 - 这就是本网站的工作方式。谢谢。 – Tommi 2010-09-14 05:24:29
您在步骤#3和步骤#4中都提到了分支,因此生成的合并不会是此方案的预期结果。按照Subclipse帮助标题为“合并两棵不同的树”的说明,因此,步骤#3应改为如下所示: 3.Team - > Merge将打开一个对话框,您将在其中执行合并操作。将“From”URL更改为引用** trunk **(合并操作的起点)。 “从修订版”应该指向您希望合并操作从**开始的主干中的修订。 – michaelok 2012-04-06 13:55:43
- 1. Subclipse - 在NetBeans中标记代码更改
- 2. SVN合并大量更改的代码
- 3. 使用Sourcetree合并代码
- 4. 如何合并KVO更改?
- 5. 如何更改JavaScript代码?
- 6. 如何用不同的按钮组合来更改HTML代码
- 7. 更改Subclipse提交行为
- 8. 更新并更改我的代码
- 9. CCMutableArray已弃用,如何更改代码
- 10. 使用Flask-Security更改密码代码
- 11. 如何使用jquery使用此代码更改css属性
- 12. Subclipse合并问题 - 空运不符合合并结果
- 13. SVN源代码控制问题合并更改
- 14. Git合并&拉代码和本地更改丢失
- 15. 如何使用Select语句作为T-SQL合并更新中的源代码
- 16. 如何合并php和html代码?
- 17. 如何合并这两个javascript代码?
- 18. 如何在svn上合并代码
- 19. 如何在github中合并代码?
- 20. 如何合并DataSets的代码?
- 21. 如何将更改合并回HEAD
- 22. 如何合并Drupal数据库更改
- 23. 如何使用SVN管理源代码?分支,合并
- 24. 源代码合并
- 25. 如何在git中使用我的更改进行合并?
- 26. 如何正确使用代码合同?
- 27. 如何更改HTML代码以适合文本?
- 28. 如何从以下C#代码的集合中更改名称?
- 29. 如何更改Scipy SLSQP Fortran代码的代码并进行测试?
- 30. Subclipse>意外合并冲突解决
感谢Cristoph为您的清晰解释。你总结得很好。这本身就很有用,因为我现在知道如何设置未来的项目。我会根据您的指示来整理当前的项目,但您的概述特别有用。 – Lemmy 2010-10-26 16:16:38