版本控制:频繁单独发布备用程序文件的最佳工具

发布于 2024-10-04 11:04:00 字数 1183 浏览 7 评论 0原文

早上好,伙计们。 这次是关于版本控制工具的一般问题。 在我的 SW 房子里,有 15 名员工在 ACU COBOL 上工作,为药房开发管理软件。 我是唯一一个从事其他集成软件工作的 .NET 人员。 这个管理软件由300-400个程序组成,我的同事经常修改并发布备用zip包中的程序;该理念类似于 Linux 发行版中的“滚动发布”。

在这种工作环境下,怎样的版本控制工具才是最好的呢? 现在他们不使用任何版本控制工具,因此他们没有先入之见:只是要学习和使用新事物。 他们需要使用某种标签来跟踪程序的更改,因此当他们必须发布修复程序(zip 包)时,他们可以进入存储库并获取标记的修改程序以实现特定请求。 我们正在考虑 Mercurial 和 Trac,但我想从其他开发人员那里了解是否有更好的工具来管理我们特定的工作和发布流程。

谢谢!
Nando


谢谢你 VonC! 我会尽力更好地解释我们的需求。

嗯,跟踪历史记录对我们来说很重要,因此 VCS(类似于 Mercurial 的 DVCS)可能是一个不错的选择。

现在,源管理是手动完成的:有一个文件夹用作主干,开发人员在其中完成工作。当努力解决错误或实现新的“紧急”功能请求时(我们与药房合作,受到我们不能忽视的数千种不同法律的影响......),他们在 Excel(!)电子表格上写下哪些程序受到他们的工作的影响;完成后,他们在发布模式下编译这些程序,构建 zip,然后将其发布到我们的自定义 Web 应用程序上,我们的软件分销商可以在其中获取它并将其发布到他们的客户的自定义前端(使用我们的管理软件)可以获得更新。

我们需要跟踪这种工作方法:

  • Bug o 需要实施的紧急功能 ->
  • 生成(按照您的意愿发布、跟踪、调用它,但有一条注释,可以在哪里以自然语言注册已完成的工作,以及帮助台(而不是开发人员)可以理解已完成的工作)->
  • 工作与调试->
  • 受此票证影响的标记(如“fix-123”)程序 ->
  • 在主干中提交 ->
  • 仅获取修改过的程序,通过标签“fix-123”搜索 ->
  • 只编译这些程序 ->
  • 构建 zip 并发布(以我们的自定义方式,这并不重要)。
  • Mercurial 可以是一个解决方案,但我只想知道其他人是否也遇到过这些相同的问题以及如何解决这些问题。

    谢谢!
    南多

    Good morning guys.
    This time a general question about versioning tools.
    In my sw house 15 people works on ACU COBOL, producing a management software for pharmacy.
    I'm the only .NET guy, working on other integration sw.
    This management sw is composed by 300-400 programs, and my colleague often modify and release programs in spare zip packages; the philosophy is similar to "rolling release" in Linux distribution.

    In this kind of working environment, how versioning tool can be the best?
    Now they don't use any versioning tool, so they have no preconcepts: just a new thing to learn and use.
    They need to track changes to the programs using sort of tags, so when they have to publish a fix (a zip package) they can go in repository and get tagged modified programs to achieve a particular request.
    We are thinking about Mercurial and Trac, but I'd like to know from other developers if there are better tools to manage our particular working and release flow.

    Thank you!
    Nando


    Thank you VonC!
    I'll try to explein better our needs.

    Well, tracking history is important for us, so VCS (a DVCS like Mercurial) can be a good choice.

    Now source management is done by hand: there's a folder that we use as a main trunk, and where developer do their work. When working to resolve a bug or implementing new "urgent" feature requests (we work with pharmacies, affected by thousands of different laws we cannot ignore…), they write down on an Excel (!) spreadsheet which programs are affected by their work; when done, they compile these programs in release mode, build the zip, then they publish it on a our custom web app, where our sw distributor can get it and publish it on their custom frontend, where their clients (using our management sw) can get the updates.

    We need to keep track about this kind of working method:

  • Bug o urgent feature to implement ->
  • generate a Ticket (issue, track, call it like you want, but a comment where to register work done in natural language and where help desk –not developer– can understand work done) ->
  • work & debug ->
  • tag (like “fix-123”) programs affected by this Ticket ->
  • commit in main trunk ->
  • get only modified programs, searching by tag “fix-123” ->
  • compile only these programs ->
  • build the zip and release (in our custom way, this is not important).
  • Mercurial can be a solution, but I only want to know if anyone else had these same problems and how resolved them.

    Thank you!
    Nando

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(1

    猫七 2024-10-11 11:04:00

    我建议区分:

    • 源管理(在 VCS 存储库中管理,可以是使用 Subversion 的集中式存储库,也可以是使用 Mercurial 或 Git 的分散式存储库:请参阅DVCS 和 CVCS 之间的差异)。此 所以答案
    • 发布管理(使用 zip 等二进制工件,在更通用的存储库(例如带有 Nexus 的 Maven 存储库)中进行更好的管理)。
      事实上,您经常发布意味着您必须“清理”一些您不再需要的旧版本(并且会占用您的磁盘空间以及备份):删除旧工件要容易得多在 Maven 存储库(例如)中比在任何 VCS 工具中(其设计是为了保留历史记录!)

    I would advice to differentiate:

    • source management (managed in a VCS repository, either a central one with Subversion, or a decentralized one with Mercurial or Git: see differences between DVCS and CVCS). Many more issues with setting up a VCS in a corporate environment are listed in this SO answer.
    • release management (with binary artifacts like your zips, better managed in a more general repository like a maven one with Nexus).
      The fact that you release often means you will have to "cleanup" some old release you don't need anymore (and which eats, release after release, your disk space as well as your backups): it is much easier to remove old artifact in a Maven repo (for instance) than in any VCS tool (which are designed to retain the history!)
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文