目录
回复讨论(解决方案)
首页 后端开发 php教程 关于多个项目代码管理的问题

关于多个项目代码管理的问题

Jun 23, 2016 pm 01:46 PM

在公司已经2年了,伴随着公司的成长,我手上的项目也日益增加起来,做了个小经理,带着十来个小弟,发展速度不快不慢,可是最近有点hold不住,到处寻求方法解决一些项目管理的问题,比如文档管理工具,BUG追踪工具,更完善的代码管理方案什么的...也接触过一下大公司的前辈,貌似他们好一部分是有自己公司开发的解决方案,不是完全开放性的.

这里我主要讲一下代码吧,我怕个别网友无法理解我所描述的情况,所以我用最详细的术语来讲一下问题是怎么产生的,我是怎么一一解决的,直到哪里不好决定了

假如我手上有项目1,其实当初是这么做的,在外网服务器上创建SVN,然后检出到本地,这里我本地称它为  项目1_online
然后会再创建一个 项目1 的内网SVN,本地再检出,当 项目1 的功能阶段开发完毕后,测试OK,再将这段时间内的变更文件导到  项目1_online  上,然后提交 项目1_online 的文件到线上,就看到线上的变化了,一旦线上有问题,马上回滚 项目1_online .顺利的话就这样了,继续接收产品需求开发 项目1,过程中如果online发现BUG,则在online上修改代码,本地建立online的vhost测试OK再提交上线.然后这份修正代码再merge到项目1里面以使得开发主干也被修复,这是单个项目的管理情况

后来加了项目2,它不是我们公司主要的经营项目,比如它只是一个很微型的小程序,基本上是一次性开发完成就可以,以后很少需求要去改变它或者升级的,并且由某个熟练的小弟专门负责维护它. 他开发完成后打了个zip包给我上线,于是我对付它的办法是:直接将它上传到外网服务器,解压文件改好数据库配置,建立vhost,DNS神马的...    过了几个月,确实有点修改了,他给了我一个zip升级包,解压即可,于是我又手动上传这个zip再解压...

项目3来了,这个我觉得要建SVN,于是在外网建了它的SVN,本地检出一份.然后也像项目1一样,本地还有个 项目3,而线上的当然也叫 项目3_online,开发模式和项目1一样.如此这般,项目4,5,6,7,8....它们也陆续来了,一次又一次地配SVN,authz,passwd,挺麻烦的哦,也并非所有人都要参与到所有项目中,有的专人负责,有的几个人负责,有的全部负责.那么问题来了:这样要维护好多SVN项目感觉好麻烦.   能不能有更好的办法去管理这些东西?我能不能轻易地添加一个项目到项目列表中,然后生成代码管理地址给大家检出,可视化分配权限--拖拖选选勾勾即可而不用一次次VIM去改?因为每次为新项目配置SVN感觉麻烦,一些小项目都懒得添加了,后来又造成那些项目的更新方法不太爽,或者撤回出现的BUG又麻烦,还是迫不得已去给它配了~

换一个思路,其实一个SVN对应一个项目是很原始的土方法了,不如变一变,一个SVN下多个项目就好了,根目录下每个子目录就是一个项目,每个项目里都有trunk,tags,branches这些,然后autz分配好权限,哪个项目是哪些人参与,那么我要新建目录就只要创建文件夹并添加到版本库即可.只是权限分配方面还是要去linux编辑文件吧~然而这样有一个缺点就是当个别项目并非部署在同一台外网服务器上时不也是要再开另一台远程服务器的SVN?对于咱们小公司来说,十来个项目两三台外网服务器,忍耐一下还是能hold住的,但大公司几百几千个项目的话不带这样玩的吧!

我到处找了找方案,发现有个持续集成管理软件的概念,昨天我安装了Jenkins试了一下,它能定时将我输入的一个版本库代码检出来并记下日志.到这里我只见到它能为我做定时更新而已.然后继续看着教程做下去,追加了一个free-style的节点是after第一个项目build之后来执行的,它是执行一些批量命令的.这些命令里好像就是应该编写单元测试的脚本和代码上线的脚本.至少这时候我已经意识到如果能写自己的命令的话,意味着我可以用这些命令自定义操作,比如将这个项目发布到指定的服务器上.它支持bat和shell命令,虽然我主要在windows下工作但不会bat,但这些当然是能学习一下就能搞定的事情.(另外很多关于Jenkins的教程都是拿JAVA项目做例子的,没有拿PHP做完整例子的,再者那个Ant我也不会,不知道它能不能构建php项目!)

到这里为止我好像初步找到了一个答案,当我怀揣着这个答案问一些前辈的时候他们都说太高大上了吧,都是一个个SVN或者其它方案处理的.那么难道大部分公司都不用这样的东西吗,是不是太过复杂,规模不大都不去使用它了?我怕我犯二所以专门来问一下

然而我是这么设想的,假如使用了持续集成软件,我们的项目将会是这样一个开发运作方式:
我在Jenkins上建立 项目1 节点,每天中午12点开始集成一次,里面配上phpunit的测试脚本(其实我还不怎么熟悉这个,但相信不难掌握,已经看了几章并实践了),这样一旦测试不通过的话我们会收到邮件,就知道这些代码因为某次的提交出现BUG了,这个嘛我相信是用SVN所不能取代的好处,当然也要安排人员认真写好一个个重要的测试用例了,把核心功能测好了,别让它不小心被牵连出BUG.然后构建完毕后发布到内网测试服务器上.其中假设所建立的项目节点是来自 svn://192.168.1.100/project1/trunk 的,我们就是基于这个主干来进行开发,但由于还没熟悉Jenkins(说了这么多次,其实大家可以将它视为一个代名词,反正就是你们所用的管理软件,有类似功能吧?),其实我也不知道它发布到内网服务器上是怎样的.是不是和我们SVN那个一模一样的文件结构,我还得花多几天学习才知道
假设是一模一样的文件结构,那么至少可以找出A和B两个构建点之间的差异文件作为补丁打包上线.打好包后丢到项目1_online上提交就好了,如果有问题就更新到指定版本实现功能撤消(但如果涉及大规模的表结构改动可不是是撤代码那么简单,尽量把开发任务切细来,避免撤代码时数据库结构都难以恢复吧!?我是这样一个理念来做的,然而我也知道并非永远都能这么顺风顺心,总有那么一天,所上的功能涉及表结构大改但出BUG后恢复表结构会变得非常麻烦,这个目前极少可能出现的情况就先不找大家讨教方案啦).

这是我对未来应用了持续集成软件的假想,不知道各位前辈在公司拥有多项目下是怎么处理这些问题的,你们的方案到底方便不方便,有没有什么更优秀的管理办法.能不能尽量满足我的需求:
1.方便增删改以及汇总日志
2.方便更新/撤回
3.方便权限分配(权限这个好像听说Git更方便,但暂时没精力学它,摸了三章而已)
4.方便及早发现BUG,因为偶尔会因为开发了第55个功能,测试时大概感觉没问题,但上线后不起眼的11号功能却被它牵连出BUG了~
5.方便部署到不同的外网服务器上


我只是在大胆试想使用各种方案后的情况会是"多么好",如果我哪里想错了,希望大家指正,分享下你的经验吧,百度上各种文章描述的都是概念,几乎没有人用实际的一个工作流程来描述解决问题的步骤,可能是本人太笨无法理解


回复讨论(解决方案)


如果服务器环境都一样,要配置好 一个,其他直接复制就可以了(jenkins自动部署,服务器监控)
大型团队推荐 GIT 版本库
 Gitblit 我用的是这个GIT版本库,JAVA的WEB网页式管理,可以满足你的要求
下面这个是我整理的,并且在使用中的一些项目管理集成自动化监控用到的一些工具!
http://blog.csdn.net/fenglailea/article/details/40506245
LNMPS:
LINUX+Nginx+Mysql+PHP+Sphinx
作者:风来了.呆狐狸
1.标准化
工具
代码(规范、格式等等)
文档
人员
等等标准化,统一使用一种格式
2.工具

js框架:Jquery 统一jquery版本
JQuery上传插件:uploadify
JQuery表单验证:Validform

弹出层:artDialog
日期时间插件:My97 DatePicker
富文本编辑器:百度编辑器UEditor
前端整合框架:bootstrap              (我们主要用于后台)

PHP版本:php5.6.x   (opencache正式服务器、正式服务器测试环境开启)
数据库版本:MariaDB 10.0.x(mysql分支)
缓存:          memcache
PHP开发工具:phpStorm
PHP调试工具:Xdebug 和 手工调试
数据库管理工具:Navicat Premium
文件代码对比工具:BCompare
文本编辑器:Notepad++
浏览器:chrome
数据库建模
流程图
本地开发环境WIN:upupw套件(全部更换于正式环境一样)
开发服务器环境           :lanmps套件            项目统一测试环境和正式环境一样, 开启错误日志显示
正式服务器测试环境   :lanmps套件            项目在发布到正式环境前,最后一次测试,关闭错误日志显示

下面3个 我们还在人工范围
代码检查
压力测试
自动化测试
3.搜索

mysql sql like搜索满足不了项目需要,所以这里 使用   sphinx-for-chinese
sphinx (中文的 一般使用coreseek 或sphinx-for-chinese)
4.版本库

GIT    开源,免费分布式版本控制系统,适合中大型团队开发    (我们使用的)
SVN  开放源码的版本控制系统
5.自动化部署

jenkins   配合 SVN或GIT  使用,配置自动化部署,备份,恢复
6.服务器监控通知

监控工具(Nagios,监控宝等等)
通告工具(百度通告平台)
监控、通告工具介绍:http://blog.csdn.net/sylcc_/article/details/40475097
7.项目管理(测试用例、缺陷安排、日程安排等等)

jira   :项目于事务跟踪工具 ,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。
confluence: 可以配合jira使用,类似 于博客文档工具
禅道项目管理 :集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,是一款功能完备的项目管理软件,完美地覆盖了项目管理的核心流程   
我们使用的是 禅道
8.其他因素
本类就属于幻想了,
在合理范围内自由化工作时间
工作环境舒适(自己设计配置自己工作环境)
可以遥望远方
多绿色
多美女
多活动(不定期组织活动.年头到年末一直开发实在太枯燥)
哈哈,特别希望像  谷歌苹果那类的公司

谢谢,不过没多少收获...我要的是jenkins的具体信息~初步通过其它渠道了解到了,它并不是用来管理代码,而是将一些重复的工作自动化
Git取代SVN的话,估计我这里的小团队不太合适,而且上司有点抗拒更换SVN这个念头

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

php中的卷曲:如何在REST API中使用PHP卷曲扩展 php中的卷曲:如何在REST API中使用PHP卷曲扩展 Mar 14, 2025 am 11:42 AM

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

在Codecanyon上的12个最佳PHP聊天脚本 在Codecanyon上的12个最佳PHP聊天脚本 Mar 13, 2025 pm 12:08 PM

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

解释PHP中晚期静态结合的概念。 解释PHP中晚期静态结合的概念。 Mar 21, 2025 pm 01:33 PM

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

框架安全功能:防止漏洞。 框架安全功能:防止漏洞。 Mar 28, 2025 pm 05:11 PM

文章讨论了框架中的基本安全功能,以防止漏洞,包括输入验证,身份验证和常规更新。

如何用PHP的cURL库发送包含JSON数据的POST请求? 如何用PHP的cURL库发送包含JSON数据的POST请求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...

自定义/扩展框架:如何添加自定义功能。 自定义/扩展框架:如何添加自定义功能。 Mar 28, 2025 pm 05:12 PM

本文讨论了将自定义功能添加到框架上,专注于理解体系结构,识别扩展点以及集成和调试的最佳实践。

See all articles