SVN:跨项目共享通用代码的最佳方式
我在一个存储库中有多个网站项目,每个项目都有WordPress的副本。更新WordPress意味着更新所有项目文件夹并保留冗余副本。这对于同步整个文件夹的rsync脚本非常有用。它还为我提供了该网站的完整本地副本 我有很多方法可以改进这一点,希望得到一些反馈。我在Windows上,最近迁移到SubversionSVN:跨项目共享通用代码的最佳方式,svn,repository,branch,Svn,Repository,Branch,我在一个存储库中有多个网站项目,每个项目都有WordPress的副本。更新WordPress意味着更新所有项目文件夹并保留冗余副本。这对于同步整个文件夹的rsync脚本非常有用。它还为我提供了该网站的完整本地副本 我有很多方法可以改进这一点,希望得到一些反馈。我在Windows上,最近迁移到Subversion 创建指向每个网站文件夹中WordPress位的符号链接。在Subversion和Apache中,这种情况会持续下去吗。有什么缺点吗 拥有一个WordPress文件夹并将其分支到其他网站。
最好的方法是什么?是否有其他解决方案?一个选项是将WordPress位分离到一个单独的存储库中(因为它不是您项目的一部分,只是您用来构建它们的东西),然后使用svn:externals将其提取到正确位置的项目中
您可以添加一个指向的定义,或使用插件和自定义设置创建自己的“自定义WordPress存储库”。也许我只是用了错误的方式使用Subversion,但我们的文件夹结构如下所示 树干 -核心 -消息传递 -超级强大的应用程序#1 -超级强大的应用程序#2 -超级强大的应用程序#3
因此,我们所有的应用程序都共享相同的核心和消息组件。这样做的唯一缺点是,当人们进行分支时,他们会得到所有的应用程序,但这比什么都麻烦。我经常为不同的项目重用相同的类库,在我的情况下,我更喜欢为每个项目提供一个单独的冻结副本。唯一的原因是,我不想破坏我已经有一段时间没有工作的项目,以防其中一个库过时。但是,如果每个项目都是某个主项目的一部分,那么您经常要处理的项目就不同了。更好的方法是将wordpress拉到存储库的一个单独分支中。然后,将一个配置文件引入到存储Wordpress路径的每个网站。您可以将此位置附加到php包含路径。下面是一张图表:
Svn repo-v
|-Websites--v
| |---One
| |---Two
|-Wordpress-v
|---branch one
|---branch two
这有两个优点:
- 您可以同时使用多个版本的Wordpress进行试验,以进行测试。您可以在所有网站之间共享这些内容
- 你不必担心wordpress在哪里签出。在一个项目中包含一个库通常是混乱的,但是这种类型的设置使得把东西放在一些公共位置变得更容易
- 您不必维护库的多个版本,更新要容易得多
- 将插件分开
- 不要将wordpress本身存储在SVN中,除非您使用供应商分支
- 当您需要获取具有特定组件的特定应用程序时,请使用构建脚本
编辑:值得记住的是,虽然site1上的“svn更新”将使用此“svn:externals”属性自动更新公共件,但site1上的“svn提交”不会显示site1/公共件中已更改的内容。您必须进行两次单独的提交,一次来自site1,另一次来自site1/commonPieces 最好的方法是什么?是否有其他解决方案 不要离题,但我建议你仔细看看我们每天都在用子模块做这类事情,这是轻而易举的事
仅供参考-大约2年前由于这些问题从SVN迁移过来。似乎正是我需要的。是将每个项目指向WordPress repo更好,还是将单个公用文件夹指向WordPress repo,然后将其他文件夹指向单个公用文件夹更好?(甚至可以这样做,也就是像那样把它们连在一起)@windycityagle,这种方法听起来不正确。检查所有的项目来完成一个项目并不好。事实上,我自己也一直在想同样的事情,所以如果有人有更好的建议,我很乐意听。有趣的是,你能不能快速解释一下,在你的情况下,是什么让git更容易?我正在仔细研究。一个问题是它是否可以与其他SVN存储库(如SVN:external does)集成,这开辟了一个可能性的世界。我喜欢git,因为它承诺性能好、占地面积小、文胸好