Git 不提交的连续集成碰撞版本

Git 不提交的连续集成碰撞版本,git,continuous-integration,versioning,Git,Continuous Integration,Versioning,假设您通过CI系统构建了一个节点应用程序。 每次构建应用程序时,都必须增加节点应用程序版本以创建新应用程序,然后将该版本提交回git存储库 但就在您构建新应用程序的那一刻,有人(同事)向您的节点应用程序存储库提交了新代码。要提交回回购协议,我们必须合并任何新的变更,然后提交回回购协议。 通过这种方式,我们最终将得到一个包,该包的特定版本在这段时间内不会提交新代码,因此我的节点应用程序将与我在git上拥有的内容不一致,这意味着如果我想手动构建节点应用程序,我将不会得到与CI相同的结果,我最终会得到

假设您通过CI系统构建了一个节点应用程序。 每次构建应用程序时,都必须增加节点应用程序版本以创建新应用程序,然后将该版本提交回git存储库

但就在您构建新应用程序的那一刻,有人(同事)向您的节点应用程序存储库提交了新代码。要提交回回购协议,我们必须合并任何新的变更,然后提交回回购协议。 通过这种方式,我们最终将得到一个包,该包的特定版本在这段时间内不会提交新代码,因此我的节点应用程序将与我在git上拥有的内容不一致,这意味着如果我想手动构建节点应用程序,我将不会得到与CI相同的结果,我最终会得到在构建过程中提交代码的人提供的增量


因此,我的问题是,有什么好的解决方案可以保持node app版本的唯一性并避免在该特定版本上进行额外提交。

i您应该手动管理版本号,CI系统是为了测试代码,而不是管理版本号。编辑:至少主要的(更重要的)版本号应该由您/您的团队管理,这样,如果您引用一个版本(比如2.3.x),您就知道2.3的含义。当你说新版本已经准备好(包含你想要完成的所有功能)并且通过了你的测试时,应该发布新版本,而不是每次通过测试时。同意,但我忘了提到我需要我的CI不断更新的可变版本是补丁,因此,开发人员可以只关注代码委员会,在这种情况下,您仍然需要识别一些东西。一个通用的解决方案是使用CI服务器生成的内部版本号(通常作为环境变量公开),而不仅仅是升级版本。这意味着您可以从修补程序编号中准确识别生成特定版本的CI版本,只需在CI系统中找到它即可。在本地,您可以只定义相同的环境变量或特殊的环境变量。主要问题不是版本是在某人已经更改时检查代码