标签: versioning

版本信息的最佳做法?

我目前正致力于自动化/改进包装我店铺整个产品的发布流程.目前该产品是以下组合:

  • Java服务器端代码库
  • XML配置和应用程序文件
  • 管理员的Shell和批处理脚本
  • 静态提供的HTML页面
  • 和其他一些东西,但这是最重要的

所有或大多数都包含其中的各种版本信息,用于不同的目的.发布打包过程的一部分涉及进行大量查找,grep'ing和sed'ing(在脚本中)以更新信息.这种包装产品的胶水似乎是以有机的,及时的方式拼凑在一起,维护起来非常糟糕.例如,一些Java方法在发布时创建Date对象,其参数由文本替换更新,无需编译器验证... just,urgh.

我试图避免给出使用的实际软件的例子(即CVS,SVN,蚂蚁等)因为我想避免"使用xyz的功能来做到这一点"并且更多地关注一般实践.我想责怪这个问题的劣质设计,但如果我不得不重新开始,仍然使用不同的技术,我不确定如何最好地处理这个问题,除了制定惯例.

我的问题是,是否有关于跨不同技术,文件类型,平台和版本控制系统维护和更新版本信息的最佳实践或提示和技巧?

language-agnostic versioning

7
推荐指数
1
解决办法
741
查看次数

文本修订的数据库设计

这个问题包含了一些关于如何为数字或多选字段等数据设计数据库历史/修订方案的优秀报道.

但是,对于大型文本字段的讨论并不多,如博客/问答/维基/文档类型系统中常见的那样.

那么,在基于数据库的编辑系统中存储文本字段历史记录的良好做法是什么?将它存储在数据库中甚至是个好主意吗?

database versioning text

7
推荐指数
1
解决办法
1657
查看次数

处理汇编版本的正确方法是什么?

我期待为即将开展的项目实施每日构建.

但在此之前,我需要知道如何正确版本的程序集.

我有以下问题:

  • 每个程序集是否应该具有独立的版本号,还是它们都应该共享相同的版本?
  • 我应该使用*版本进行构建和修订吗?
  • 修订是否与日常构建相关?

versioning project-management visual-studio

7
推荐指数
1
解决办法
798
查看次数

在Java和Eclipse中管理对库的多个版本的依赖性

在Eclipse环境中,我有项目A.A对项目或库B和C具有依赖性.(如果它们是项目或库则没有区别)B依赖于LibX.v1,C依赖于LibX.v2.在运行时,A将需要B.jar和C.jar.另外,B.jar中的类需要LibX.v1,而C.jar中的类需要LibX.v2.作为同一个库的不同版本,LibX.v1和LibX.v2具有相同的类,因此可能会在运行时从错误的库版本加载类,从而导致很多麻烦.我该如何处理这种情况?

亲切的问候Seref

java versioning jar

7
推荐指数
1
解决办法
8926
查看次数

在持续集成环境中处理版本控制

如何在具有开发分支和发布分支的持续集成环境中处理版本控制?我正在使用git,因此没有使用增量存储库版本.似乎会有重叠版本,例如dev分支上的1.1.0和发布分支上的1.1.0.你只是附加文本"dev"或"release"?

此外,当您创建发布分支时,您是否立即将开发分支增加到下一个"建议"版本号?您可能还不知道下一个版本号,但如果您不增加它,那么您有1.1.0 dev包含1.1.0版本中未包含的新工作.

所以我的主要问题是这两个分支之间的版本控制序列之间的关系是什么?

请记住,我不会询问如何决定使用哪个版本号.我之前尝试过这样做,并不断收到评论,例如"增加主要用于破坏变化"等.

versioning continuous-integration

7
推荐指数
1
解决办法
1666
查看次数

yum如何比较版本?

我们有一个Web应用程序,我们打包到RPM.我们对RPM的版本字段有疑问.

假设我们已经安装了rpm:foo-2.1.0.007

007是我们的内部版本号.

现在,当我们尝试安装更新的rpm,foo-2.1.0.010时,yum说"没有什么可以更新".

当我重新制作RPM但删除了前导零时,问题就解决了:

FOO-2.1.0.7

FOO-2.1.0.10

根据此链接,将版本的每个段作为整数进行比较,但实践表明不是这样.

所以我的问题是:什么是RPM的版本比较算法以及为什么前导零干扰?

versioning comparison yum fedora10

7
推荐指数
1
解决办法
4743
查看次数

Maven分支更新项目版本自动化发布工作流程

关于Maven自动化项目版本控制,我有一个难以解决的案例,我希望我会根据您的经验和建议找到合适的解决方案.

问题是这样的:我们有一个巨大的mavenized java产品,它包含~200个非常相互依赖的不同项目.我们同意每个项目都应该独立开发,以便每个项目都有自己的生命周期.在开发阶段一切正常,没有问题.当我们为这些项目准备发布时,问题就出现了:因为手动更改的项目非常多,所以我们决定找到一个自动解决方案来解决发布过程.

先决条件是这些:我们都同意SVN视角的发布策略应该是这样的: - 所有开发都应该在SVN中继上执行,应该在分支上创建和维护发布.每个执行的版本都应自动创建一个标记.

来自MAVEN视角的策略是这样的: - 在发布项目之前,我们首先将主干复制到分支,以便控制对分支代码的项目维护.我们选择的版本控制系统是:Major.Minor.BuildNumber-SNAPSHOT(例如1.0.0-SNAPSHOT).分支代码时,我们希望通过递增MinorVersion来更改项目版本号(例如,trunk-1.0.0-SNAPSHOT将变为1.1.0-SNAPSHOT,并且将在新创建的分支上复制和发布1.0.0-SNAPSHOT ) - 当我们决定项目足够成熟以便发布时,我们通过使用maven-release-plugin(mvn release:clean release:prepare release:perform)发布它,以便我们的项目版本将从Major转换. Minor.BuildVersion-SNAPSHOT(例如1.0.0-SNAPSHOT)Major.Minor.BuildVersion(例如1.0.0),然后将为下一个开发迭代做好准备,如:Major.Minor.BuildVersion + 1-SNAPSHOT(例如1.0. 1-SNAPSHOT)

我们面临的问题与项目版本控制有关.因此,在主干的开发阶段,所有项目都使用其依赖项的最新SNAPSHOT版本(mvn版本:use-latest-versions -DallowSnapshots = true -DupdateDependencies = true),但是当我们考虑是时候启动发布程序并准备分支代码,出现问题:我们开始分支

  1. 父POM

    (mvn -B release:clean release:branch -DbranchName = $ {project.artifactId} _ $ {project.version} -Dusername = $ {username} -Dpassword = $ {passwd} -Dproject.rel.$ {groupId}: $ {projectId} = 1.0.0-SNAPSHOT -Dproject.dev.$ {groupId}:$ {projectId} = 1.1.0-SNAPSHOT)

    • 将项目从主干复制到新创建的分支,将主机上的pom版本从1.0.0-SNAPSHOT转换为1.1.0-SNAPSHOT …

versioning automation branch maven

7
推荐指数
1
解决办法
2227
查看次数

MvcContrib.MVC3-ci和Mvc.Contrib NuGet包之间有什么区别?

MvcContrib.MVC3-ci和Mvc.Contrib NuGet包之间有什么区别?

我看到他们有不同的依赖关系-ci有更多的下载.我假设我想要-ci用于我的MVC3项目,但我该如何理解呢?-ci是什么意思?

versioning asp.net-mvc nuget-package asp.net-mvc-3

7
推荐指数
1
解决办法
1256
查看次数

无法导出cmake PROJECT_VERSION_MAJOR,因为它等于零

我在将cmake PROJECT_VERSION_MAJOR变量导出到config.h文件时遇到问题.在我的主要内容CMakeLists.txt我通过调用project()CMakeLists.txt文件根据cmake文档设置此变量:

cmake_minimum_required(VERSION 3.2.2)
cmake_policy(SET CMP0048 NEW)

set(PROJECT "SampleName")

project(${PROJECT}
    VERSION "0.0.0")

configure_file(${CMAKE_SOURCE_DIR}/cmake/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
Run Code Online (Sandbox Code Playgroud)

通过configure_file()invokation我试图将一些cmake变量导出config.h到头文件.请看看我的config.h.cmake.file:

#ifndef CONFIG_H
#define CONFIG_H

#cmakedefine PROJECT "@PROJECT@"

#cmakedefine PROJECT_VERSION "@PROJECT_VERSION@"

#cmakedefine PROJECT_VERSION_MAJOR "@PROJECT_VERSION_MAJOR@"

#cmakedefine PROJECT_VERSION_MINOR "@PROJECT_VERSION_MINOR@"

#cmakedefine PROJECT_VERSION_PATCH "@PROJECT_VERSION_PATCH@"

#endif
Run Code Online (Sandbox Code Playgroud)

cmake ..在我的构建目录中运行命令后config.h创建,但它看起来像这样:

#ifndef CONFIG_H
#define CONFIG_H

#define PROJECT "SampleName"

#define PROJECT_VERSION "0.0.0"

/* #undef PROJECT_VERSION_MAJOR */

/* #undef PROJECT_VERSION_MINOR */

/* #undef PROJECT_VERSION_PATCH */

#endif
Run Code Online (Sandbox Code Playgroud)

我想这个行为的原因是在cmake文档中关于该configure_file() …

c++ versioning cmake

7
推荐指数
1
解决办法
2035
查看次数

Docker镜像版本控制和生命周期管理

我正在进入Docker,并试图更好地了解它在"现实世界"中的运作方式.

在我看来,在实践中:

  • 您需要一种方法来版本化Docker镜像
  • 您需要一种方法来告诉Docker引擎(在VM上运行)停止/启动/重新启动特定容器
  • 您需要一种方法来告诉Docker引擎运行哪个版本的映像

Docker是否附带内置命令来处理这些命令?如果没有使用什么工具/策略来完成它们?另外,当我构建一个Docker镜像时(例如,通过docker build -t myapp .),生成了什么文件类型以及它在机器上的位置?

versioning lifecycle docker

7
推荐指数
1
解决办法
3754
查看次数