与“普通” svn目录结构相反,我使用以下结构:
树干/
项目1 /
项目2 /
项目3 /
...
分支机构/
project1-分支/
项目1 /
项目2 /
...
project2-分支/
项目1 /
项目2 /
...
标签/
项目1 /
V1
V2
...
如您所见,对于每个项目,我没有单独的三元组(树干/分支/标签)。
为了进行开发,我对主干进行了检出(有时是稀疏检出),其中包含我需要的所有项目(项目之间存在依赖关系,有些项目只是库)。
我从中看到的好处是:
更新和签入很容易,因为我对所有项目都有一个公共的根目录(trunk)。一个简单svn update
或svn commit
全部完成。
创建标签或分支很简单,因为这只是我要做的主干svn copy
。(分支和标签实际上包含的项目超过了所需的数量,但是a svn copy
便宜,如果需要,我仍然可以在分支或标签上进行稀疏签出。)
将资源从一个项目转移到另一个项目很容易,因为它们都位于同一个存储库中。
当我正在全面检查主干时,全局重构(例如,更改常用类的包)很容易,因为可以确保我不会错过任何项目。
合并很容易,因为即使从一个项目到另一个项目进行重构,我也总是可以一次合并整个分支。
我打算迁移到Maven,并将所有项目从主干项目拆分到Maven项目。我想从Maven依赖管理和可用的插件中受益(现在我正在使用庞大的自定义ant文件)。
现在我的问题是:
我是否必须更改svn目录结构,以使每个项目都有自己的三元组(trunk / branches / tags)?我猜答案是“是”。
如果更改结构,那么我会失去上面提到的哪些好处(我的意思是,使用Maven进行操作会更复杂)?
用maven做这些的等效方法是什么?
没有这样的东西,一个“普通的” svn目录结构。有在讨论不同的方法一节“规划你的版本库组织”的的
版本控制使用Subversion
的书(甚至是/trunk
,/tags
,/branches
名称只是约定,有没有区别标签和分支之间,除非你对他们的看法) 。
- 我是否必须更改svn目录结构,以使每个项目都有自己的三元组(trunk / branches / tags)?我猜答案是“是”。
不,你不 有 。参见例如Apache
ServiceMix源树:这是一个多模块的maven项目,但这些模块位于一个之下trunk
。另一方面,XWiki
不是单一产品,而是
其源代码存储库页面中详细介绍
的产品和项目生态系统,
它具有许多主干/分支/标签。您可以在此处浏览其存储库以了解布局。
但是,选择一种方法还是另一种方法,不仅取决于口味,还取决于您的发布周期(mvn release
稍后再讨论)。如果您的项目中的组件共享相同的版本(即ServiceMix),那么我将仅使用一个中继。如果他们有一个独立的发布周期(例如XWiki),我将使用多个“主干/标签/分支”结构,如该线程中所述:
myrepo + .links (2) + trunks + pom.xml + parent-pom (1) + trunk + pom.xml + project-A + trunk + pom.xml + project-B + trunk + pom.xml
1)项目的父POM具有自己的发布周期。每个组件的POM都将其用作父对象(简单地使用
groupId
和
artifactId
,否引用relativePath
)。对于发行版,您必须先发行父POM。2)这是一种结构,可以轻松检出项目的特定分支,即通常是干线。一个Subversion用户检出myrepo / .links /
trunk以获得所有源的主修订版。诀窍在于,该目录包含svn:externals
指向该项目所有其他模块(父pom,project-A,project-B)的主干的外部链接(即具有
属性)。此目录中的pom.xml从未发布,它仅包含用于三个模块的模块部分,以启用多模块构建。通过这种构造,您可以轻松设置分支,例如:myrepo + .links + branch-2.x + pom.xml
我已经多次使用此设置,效果很好。
- 如果更改结构,那么我会失去上面提到的哪些好处(我的意思是,使用Maven进行操作会更复杂)?
让我一一回答。
借助svn externals,更新和签入都很容易。一个简单svn update
或svn commit
全部完成。
创建标签或分支很简单,因为maven版本插件会为您处理(标签和分支会更干净)。
将资源从一个项目转移到另一个项目看起来并不复杂。
全局重构(例如,更改常用类的包)很容易,因为您仍然可以对干线进行完整的检出。
合并可能不太容易。但是,您真的经常将类从一个项目移动到另一个项目吗?
- 用maven做这些的等效方法是什么?
如果需要,请使用maven版本插件和svn externals的建议布局之一。
迁移数据库ORM层 迁移模板Blade 迁移分页 迁移验证器 迁移Cache
数据库 模板类 验证器 缓存类
问题内容: 在我的新项目中,我面临着一个复杂的基础架构,其中包含多个模块,这些模块多年来以令人不快,不受控制的方式增长。 直言不讳:构建过程令人恐惧。有40多个不同的复杂Ant文件,它们被多次连接,并且SOA框架还生成了多个动态Ant文件。花了几天的时间才能真正理解所有依赖关系,并最终构建整个项目而没有任何错误。 我的计划是或打算将整个项目从Ant迁移到Maven,因为已经计划了新组件,并且我希望
Subversion版本库到Git版本库的转换,最好的方法就是git-svn。而git-svn的使用方法在前面“Git和SVN协同模型”一章已经详细介绍过。本章的内容将不再对git-svn的用法做过多的重复,只在这里强调一下版本库迁移时的注意事项,相关git-svn内容还请参照前面的内容。 在迁移之前要确认一个问题,Subversion转换到Git库之后,Subversion还继续使用么?意思是说
迁移cache分页 仓库地址: cache 安装 composer require illuminate/cache 暂时实现 redis方式 还需安装 composer require illuminate/redis composer require predis/predis //个人比较喜欢predis 启动predis function frameInitialized() {
迁移pagination分页 仓库地址: pagination 安装 composer require illuminate/pagination 我们可以用illuminate/pagination分页了 $users = User::paginate(15); //在你的模板 {!! $users->links() !!} 然后你将看到一堆莫名其妙的错误,没关系,让我们来解决它。既然不能像l