Redmine —— 项目管理工具的新发现

项目管理工具的选择,很是经过了一番挣扎。用过 Mantis, Trac。直到有朋友提到了 Redmine。

 

Mantis ?

技术上太陈旧了,没有版本库浏览,不支持 Web 2.0,界面陈旧,难以激发使用兴趣。

加之用 PHP 开发,代码难以维护。在二次开发中,难保在这里那里引入 Bug。

Trac?

技术上很好,用 Python 开发,整合了版本库浏览器,而且还通过维基技术将各个模块有机整合。但是最主要的缺点:

  • 不支持多项目
  • 项目要以多实例方式在命令行下创建,增加管理员负担
  • 项目之间各自数据库独立无法关联,Ticket不能在项目之间进行复制或者移动...

Redmine 才是真正的项目管理软件的杀手级应用

  • Trac 克隆。所有 Trac 有的,基本都在 ROR 框架下实现了
  • 真正的多项目支持
  • 虽然不支持一个项目和多个版本关联,但是可以通过建立子项目实现
  • Web 2.0 技术

Redmine 的改进和增强

但是 Redmine 也有遗憾:

  • 版本库没有精细权限控制,只能存在非0即1的权限控制
  • Git 版本库支持不好,在 0.9.0 解决了这个问题
  • Hg 版本库支持存在问题
  • 基于 textile 的维基语法非常古怪,对于使用 Trac 语法已经习惯的用户非常的别扭

开源软件的本质,让我们可以自己上手来完善它。

 

在使用 redmine 的过程中,我们解决了这些问题,并在很多方面加以完善。可以在

群英汇项目管理首页 看到我们的改进。相关代码提交也可以在群英汇的网站上找到。

 

例如对于 Subversion 授权的改进,参见:

对于 Redmine 您有什么改进建议和好的补丁,一起到 github 上分享。

### Redmine 工作流程概述 Redmine 是一款基于Web的项目管理和缺陷跟踪工具,支持多项目管理并集成了诸如甘特图、日历、Wiki等功能。工作流主要围绕着项目的创建、任务分配、进展追踪和问题解决展开。 #### 创建新项目 当需要启动一个新的项目时,管理员可以在系统内新建一个项目条目,在此过程中定义基本属性如名称、描述、成员权限等[^3]。 #### 添加成员与角色设定 对于每一个加入到特定项目的人员来说,都需要被赋予相应的角色(例如开发者、测试者),这些角色决定了他们可以执行哪些操作以及访问何种级别的数据。 #### 发布需求与规划迭代 产品经理或负责人会在平台上发布产品的需求文档,并据此制定详细的开发计划;这通常涉及到设置里程碑(Milestones),安排Sprint周期内的具体工作任务列表(Tasks List)。 #### 开发过程中的沟通协作 团队内部可以通过内置的消息板(Discussion Board)交流想法和技术细节,也可以利用Issue Tracking System记录遇到的技术难题或是发现的产品Bug。任何一位参与者都可以提交新的issue报告给相关人员处理。 #### 更新状态与进度汇报 随着工作的推进,负责不同模块的人需定期更新各自承担的任务的状态——已完成(Closed)/待办(Open)/进行中(In Progress)等等。项目经理则依据这些反馈调整整体时间表并向利益相关方通报最新情况。 #### 测试验证阶段 质量保证(QA)工程师会针对已实现的功能进行全面检测,一旦确认无误便关闭对应的issues。如果存在问题,则重新打开该事项并将之指派回原作者处修正直至满足验收标准为止。 #### 文档化成果交付物 在整个生命周期结束之后,所有重要的决策记录、变更请求及其解决方案都应妥善保存下来作为历史参考资料供日后查询使用。此外还有必要撰写最终版的release notes来总结整个版本的主要特性变化点。 ```python # Python 示例代码用于模拟简单的红mine API调用来获取项目信息 import requests def get_project_info(project_id, api_key): url = f"https://your_redmine_instance/projects/{project_id}.json?key={api_key}" response = requests.get(url) if response.status_code == 200: project_data = response.json() return project_data['project'] else: raise Exception(f"Failed to fetch data with status code {response.status_code}") # 假设API密钥为 'example_api_key' 并尝试获取ID为1的项目详情 try: project_details = get_project_info('1', 'example_api_key') except Exception as e: print(e) if isinstance(project_details, dict): print("Project Name:", project_details.get('name')) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值