Having a version control system is good, bug using it effectively is better. There are several ways to branch and merge effectively, two that might work for you are "per-feature" and "per-client".
Per Feature
In this setup, you create a copy of the main code (the trunk) for each new feature that you implement. Once the feature is complete, merge it back into the trunk. If you update the trunk before the feature is complete, or you complete a different feature, it is possible to merge those changes from the trunk into all of the branches.
Per Client
Same as per-feature, but each client gets their own branch, so that a feature rolled back for one is not removed from another. To combine the two, you might structure your repository like this:
Now, to address your actual question. I can't really say much about this from experience, but I am planning to add Trac to my project soon, because it looks simple to use, and it's free. You can see from their site how Trac's developers use their own application to set milestones and organize issues. If you want to look into more possibilities, then Wikipedia has a fewlists.
There is a solution to your problem using ]project-open[, but it's not an easy one:
]po[ includes a ticket tracker that you can use for tracking your customer's change requests.
After implementing a change request, you need to include the #ticket_id in your commit comments, so that ]po[ can associate commits with change tickets. You need to have the ]po[ package intranet-cvs-integration installed and configured correctly for this purpose. The package name includes "CVS", but it can also integrates with SVN and GIT.
Finally, you have to create a script that applies the commits selectively to your code baseline, depending on the status of each change ticket.
This way you can automatically produce your release files, depending on the status of your change tickets.
发布评论
评论(3)
版本控制
拥有版本控制系统固然好,但有效地使用它会更好。 有多种方法可以有效地分支和合并,其中两种可能适合您的方法是“按功能”和“按客户端”。
每个功能
在此设置中,您将为实现的每个新功能创建主代码(主干)的副本。 功能完成后,将其合并回主干。 如果您在功能完成之前更新主干,或者完成不同的功能,则可以将这些更改从主干合并到所有分支中。
每个客户端
与每个功能相同,但每个客户端都有自己的分支,因此为一个客户端回滚的功能不会从另一个客户端中删除。 要将两者结合起来,您可以像这样构建存储库:
立即进行项目管理
,以解决您的实际问题。 根据经验,我对此无法说太多,但我计划很快将 Trac 添加到我的项目中,因为它看起来使用简单,而且是免费的。 您可以从他们的网站看到 Trac 的开发人员如何使用他们自己的应用程序来设置里程碑和组织问题。 如果您想了解更多可能性,那么维基百科有一些 列表。
Version Control
Having a version control system is good, bug using it effectively is better. There are several ways to branch and merge effectively, two that might work for you are "per-feature" and "per-client".
Per Feature
In this setup, you create a copy of the main code (the trunk) for each new feature that you implement. Once the feature is complete, merge it back into the trunk. If you update the trunk before the feature is complete, or you complete a different feature, it is possible to merge those changes from the trunk into all of the branches.
Per Client
Same as per-feature, but each client gets their own branch, so that a feature rolled back for one is not removed from another. To combine the two, you might structure your repository like this:
Project Managemet
Now, to address your actual question. I can't really say much about this from experience, but I am planning to add Trac to my project soon, because it looks simple to use, and it's free. You can see from their site how Trac's developers use their own application to set milestones and organize issues. If you want to look into more possibilities, then Wikipedia has a few lists.
您可能最好使用源代码存储库,例如 Git、Subversion、Mercurial 等。
使用哪一个在很大程度上取决于您的需求和平台,但是您可能是 SCM 工具的新手,因此我建议使用 TortoisSVN 进行 subversion。
You're probably best using a source code repository such as Git, Subversion, Mercurial etc.
Which one to use depends heavily on your needs and platform, however you're probably new to SCM tools so I'd recomment subversion with TortoisSVN.
使用 ]project-open[ 可以解决您的问题,但这并不容易:
这样,您就可以根据变更单的状态自动生成发布文件。
There is a solution to your problem using ]project-open[, but it's not an easy one:
This way you can automatically produce your release files, depending on the status of your change tickets.