在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
如何在具有开发分支和发布分支的持续集成环境中处理版本控制?我正在使用git,因此没有使用增量存储库版本.似乎会有重叠版本,例如dev分支上的1.1.0和发布分支上的1.1.0.你只是附加文本"dev"或"release"?
此外,当您创建发布分支时,您是否立即将开发分支增加到下一个"建议"版本号?您可能还不知道下一个版本号,但如果您不增加它,那么您有1.1.0 dev包含1.1.0版本中未包含的新工作.
所以我的主要问题是这两个分支之间的版本控制序列之间的关系是什么?
请记住,我不会询问如何决定使用哪个版本号.我之前尝试过这样做,并不断收到评论,例如"增加主要用于破坏变化"等.
我们有一个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的版本比较算法以及为什么前导零干扰?
我正在寻找rails中版本数据库更改的解决方案.寻找非常基本的东西.
我的意思是像维基或SO编辑版本.
我们的软件产品由许多部分组成.假设它由内核驱动程序部分,用户dll和GUI软件组成.在开发过程中,我们在最新版本中编译和使用它们,但在发布时它们并不相同.
实际上,内核部分必须比其他部分更早地冻结.然后,dll被冻结,以进行广泛测试,最后冻结是GUI.随着QA的发展,我们需要使用固定的GUI创建完整版本的更新版本,但仍然使用之前包含的内核驱动程序和dll.
我想知道是否存在一个工具,它将管理每个软件部分的哪个版本用于创建发布?
该工具可能会集成到工具链中,以构建所选每个软件的版本,并将它们收集到Windows安装程序或Linux软件包中.
编辑:我们现在在做什么?
截至目前,我们正在使用SVN和buildbot作为Linux/gcc和Windows/VStudio的CI工具.我们处于根据需要对整个存储库进行分支/标记的模式.但是,由于存在越来越多相对独立的软件部件,这会让人感到痛苦并使发布过程变得痛苦.
我们正在考虑将存储库布局更改为具有多个独立分支/标记的项目.这将更适合软件开发和发布周期.但是,我们绝对需要这样一个工具.
问题与拥有不同的软件有关,每个软件都有自己的分支/标记版本,并收集到完整的软件版本中.
编辑:需要什么.
最后,我理解我需要的是Windows的包管理器.Linux上RPM或DEB管理器意义上的软件包管理器.
有没有人知道Windows上的包管理器?
我目前在使用git进行语义版本控制时遇到了麻烦.
我们在http://nvie.com/posts/a-successful-git-branching-model/上使用git版本控制模型
我们还希望遵循http://semver.org/中列出的语义版本控制准则.
这是我们的示例用例.
Release branch: ----1----2----3----4 <- tag v1.2 ----7---8---9 <- tag v1.3
/ \ / \
Develop branch: --0--------5---------4--6-----------------------------9--
Run Code Online (Sandbox Code Playgroud)
这是我们的示例用例:
我们想要做的是能够搜索所有新添加的签名,因为创建了标签v1.2,这些新签入新标记为v1.3,这样我们就可以确定我们组件的版本凹凸(xyz)类型需要做.
如果5恰好是一个重大变化,但是从v1.2开始的所有内容都没有,我们将错误地修改次要版本,因为checkin 5不在构建中.
有没有人对如何解决这个问题有任何建议?
我目前正在进入OrientDB进行研究,以评估图数据库的版本控制功能.
OrientDB中的每条记录都有一个@version属性,每次更新记录时都会增加.这为版本控制支持提供了指示.我已经设置了一个简单的例子(使用OrientDB SQL)来测试它:
create class Product
create property Product.name string
create property Product.price integer
insert into Product (name, price) values ('Fridge', 449)
update Product set price = 479 where name = 'Fridge'
select from Product
Run Code Online (Sandbox Code Playgroud)
执行上面的语句后,我得到以下查询结果:
{
"result": [
{
"@type": "d",
"@rid": "#14:0",
"@version": 2,
"@class": "Product",
"name": "Fridge",
"price": 479
}
],
"notification": "Query executed in 0.031 sec. Returned 1 record(s)"
}
Run Code Online (Sandbox Code Playgroud)
在此数据库状态中 - 如何检索记录的先前版本(在这个简单的情况下为版本1)?这是通过OrientDB SQL语句和/或通过OrientDB Java API实现的吗?如果不是 - 那么@version属性的目的是什么?
感谢您的帮助!
我是Perforce的新手,并在寻求以下简单问题的帮助:
我在网上搜索了问题2,但没有运气.
先感谢您!
基本上,我认为对你的REST api进行版本化是一个好主意.这是常识.通常你会遇到两种方法来解决这个问题:
/api/v1/foo/bar,Accept: vnd.myco+v1.到现在为止还挺好.这是几乎所有的大公司做的.这两种方法各有利弊,这里讨论了很多这方面的内容.
现在,我已经看到了一个完全不同的方法,在Twilio,描述在这里.他们使用日期:
在编译时,开发人员在编译代码时包含应用程序的时间戳.该时间戳记在所有HTTP请求中.
当请求进入Twilio时,他们会查看.根据时间戳,他们识别在创建此代码时有效的API并相应地进行路由.
这是一个非常聪明和有趣的方法,虽然我认为它有点复杂.例如,理解时间戳是编译时间还是API发布时的时间戳可能会令人困惑.
虽然我在某种程度上发现这个也很聪明,但我想知道这种方法的真正好处是什么.当然,这意味着您只需要记录一个版本的API(当前版本),但另一方面,它可以使更改的内容更难以跟踪.
有谁知道这种方法的优点是什么,为什么Twilio决定这样做?
请注意,我知道这个问题听起来好像答案主要是基于意见的,但我想Twilio有很好的技术理由这样做.因此,请不要将此问题视为主要的基于意见的问题,因为我希望答案不是.
这似乎应该是这么简单,但我找不到任何似乎有效的解决方案......
我需要一个CVS命令,它给出了您已应用于文件的标记的名称,它将为您提供修订号.
CVS树结构:
(filename)
|
+--> 1.1-----(branch)
| |
| 1.1.1.1---(tag1)
| |
| 1.1.1.2---(tag2)
| |
| 1.1.1.3---(tag3)
| |
| :
1.2
|
|
:
Run Code Online (Sandbox Code Playgroud)
我能找到的最接近的是使用log带有-Q标志的命令,但这仍然提供了比我需要的更多的信息.
例如: cvs -Q log -h filename
将标记名传递给log命令似乎没有任何效果.
CVS版本信息:

我目前的解决方案是使用perl脚本来解析log命令的输出,但必须有一个更简单的方法...