标签: versioning

加载具有不同版本的多个共享库

我在Linux上有一个可执行文件加载libfoo.so.1(即a SONAME)作为其依赖项之一(通过另一个共享库).它还链接到另一个系统库,而该系统库又链接到系统版本libfoo.so.2.其结果是, libfoo.so.1libfoo.so.2执行期间被加载,和这应该从库版本1调用函数代码结束调用从一个较新的系统库(二进制不相容)功能与第2版,因为一些符号保持不变.结果通常是堆栈粉碎和随后的段错误.

现在,链接旧版本的库是一个封闭源的第三方库,我无法控制libfoo它编译的版本.假设,剩下的唯一选择是重建当前链接的一堆系统库以libfoo.so.2进行链接libfoo.so.1.

有没有办法避免使用链接到旧版本的本地副本替换系统库libfoo?我可以加载两个库并让代码调用正确的符号版本吗?所以我需要一些特殊的符号级版本控制?

linux versioning gcc shared-libraries dynamic-linking

16
推荐指数
2
解决办法
7205
查看次数

Ruby on Rails中模型的版本控制

我正在寻找一个插件/动作来允许我的模型版本化.找到可用解决方案的列表很困难.到目前为止我收集了:

  • acts_as_versioned
  • simply_versioned
  • vestal_versions

最后两个解决方案只需要一个版本表 - 这听起来不错,但我对于如何通过这种方式处理迁移的简易性感到不好(因为它们将状态序列化为字符串).

另一方面,acts_as_versioned有点尘土飞扬(1月最后一次提交).这些中有任何最近的经验吗?或者我可能忽略了其他解决方案(或叉子)?

versioning ruby-on-rails acts-as-versioned vestal-versions

16
推荐指数
2
解决办法
5742
查看次数

数据库内容版本控制

我感兴趣的是保持数据库中某些表发生的每个更改的运行历史记录,从而能够重建数据库的历史状态以进行分析.

我正在使用Postgres,这个MVCC似乎我应该能够为此目的利用它,但我找不到任何文档来支持这个.我可以做吗?有没有更好的办法?

任何输入都表示赞赏!

UPD

我已经将丹尼斯的回答标记为答案,因为他确实回答了MVCC是否是我想要的问题.但是,我已经确定的策略详述如下,以防有人发现它有用:

Postgres功能可以满足我的需求:在线备份/时间点恢复.

http://www.postgresql.org/docs/8.1/static/backup-online.html解释了如何使用此功能,但基本上您可以将此"预先写入日志"设置为存档模式,拍摄数据库的快照(比如说) ,在它上线之前),然后不断归档WAL.然后,您可以随时使用日志重播来调用数据库的状态,如果您选择(通过不断重播备用服务器上的新WAL),可以获得热备用的附带好处.

也许这种方法不像其他保存历史记录那样优雅,因为你需要为你想要查询的每个时间点实际构建数据库,但是它看起来非常容易设置并且丢失零信息.这意味着当我有时间改进对历史数据的处理时,我将拥有一切,因此能够将我笨重的系统转换为更优雅的系统.

使其如此完美的一个关键事实是,我的"有效时间"与特定应用程序的"交易时间"相同 - 如果不是这种情况,我只会捕获"交易时间".

在我发现WAL之前,我正在考虑每天拍摄快照或其他东西,但是大尺寸要求和数据丢失并不适合我.

为了快速启动和运行,从一开始就不影响我的数据保留,这似乎是一个完美的解决方案.

versioning postgresql mvcc

16
推荐指数
2
解决办法
2万
查看次数

如何在我的应用程序中显示上次构建的内部版本号和/或日期时间?

我知道我可以这样做以获得应用程序的官方(发布/发布)版本号:

string version = Assembly.GetExecutingAssembly().GetName().Version.ToString();  
this.Text = String.Format("Platypi R Us - version {0}", version);
Run Code Online (Sandbox Code Playgroud)

...但这仅显示我的应用程序的"发布版本"*("1.0.0.0").我想显示内部版本号.

  • 来自项目| 属性| 发布标签.

除此之外,或者除此之外,我想显示最后一次构建的日期和时间,以便它说"Platypi R Us - 3.14版(2012年7月17日16:22)"

c# versioning build version winforms

16
推荐指数
1
解决办法
2万
查看次数

在Git中删除远程分支

我想删除项目存储库的一些远程分支.我运行下一个命令:

git push origin :name_of_branch
Run Code Online (Sandbox Code Playgroud)

当我列出远程分支时

git branch -r
Run Code Online (Sandbox Code Playgroud)

我删除的分支没有出现,但是我的合作伙伴

git fetch
Run Code Online (Sandbox Code Playgroud)

然后

git branch -r
Run Code Online (Sandbox Code Playgroud)

在列表中,name_of_branch我删除的分支仍在列表中.但是,当他试图删除分支时

git push origin :name_of_branch
Run Code Online (Sandbox Code Playgroud)

他收到了下一条消息:

error: unable to delete 'name_of_branch': remote ref does not exist
error: failed to push some refs to 'the_name_of_the_repository'
Run Code Online (Sandbox Code Playgroud)

我怎么能完全删除列表中的分支?

versioning git version-control

16
推荐指数
2
解决办法
4413
查看次数

"npm update"是在"npm install"之后安装的稳定版本上安装测试版的模块

目前,npm包mongoose的版本为3.8.12.npm install mongoose --save正确运行安装版本3.8.12并将依赖项保存到package.json,如下所示:

"dependencies": {
  "mongoose": "^3.8.12"
}
Run Code Online (Sandbox Code Playgroud)

如果您查看,node_modules/mongoose/package.json您可以看到安装的版本确实是3.8.12.但是,如果我现在运行,npm update那么npm将继续安装不稳定版本的mongoose(3.9.0).我假设这是因为依赖项中的插入符告诉npm继续并升级次要版本(即3.8到3.9).这没关系,除了我不想要任何预发行版本.如果我修改依赖项并删除插入符然后npm update按预期工作,当然我现在必须手动升级依赖项版本,即使是次要和补丁更新.

你可以从跑步中npm info mongoose看到他们有一个"最新"标签和一个"不稳定"标签.

所以npm install除非另有说明,否则明确使用最新版本,同时npm update完全忽略标签并抓住它所知道的最新次要版本.

有没有办法修改依赖项,因此npm update将引入最新的次要版本但忽略任何预发行版本?

UPDATE

如果我尝试使用3.x.x依赖项,则会出现同样的问题.我希望这仍然允许我通过没有预发行版本的次要版本进行升级,但事实并非如此:/

Tilde(~3.8.12)在技术上有效,但它是一个绑带.它"工作"的唯一原因是因为引入的重大变化是在3.9.0-unstable和波浪号中不允许npm在次要版本之间升级.如果引入这些"不稳定"的变化,3.8.13-unstable那么即使使用波浪号也会发生同样的问题.

更新2

我也尝试手动指定"最新"标签:^3.8.12-latest.这并没有改变任何事情; npm update完全忽略标记,即使它在依赖项列表中明确显示:/

versioning dependencies dependency-management node.js npm

16
推荐指数
1
解决办法
5181
查看次数

跨3个平台的Xamarin移动应用程序版本号方案

这里可能存在多个相关的问题.我正在尝试为我们的3个移动应用程序提供一个简单的版本号更新方案,该应用程序是通过单个xamarin解决方案构建的.

我正在寻找的是一种简单的方法,可以保持所有这些值彼此同步,而无需单独更新它们.

  • Windows Phone版本应自动设置为AssemblyVersion或FileVersion
  • IOS版本号应设置为相同.(不确定构建号应该是什么)
  • Android版本名称应设置为相同.
  • Android版本号应为每个版本构建自动递增.

我当前的设置需要导航到4个不同的位置以手动同步版本号.

  1. 全球大会信息

我有一个链接文件,其中包含AssemblyVersion和AssemblyFileVersion,它们由解决方案中的所有PCL和Platform项目共享,并带有以下信息.

[assembly: AssemblyVersion("2.1.1.*")]
[assembly: AssemblyFileVersion("2.1.1.0")]
Run Code Online (Sandbox Code Playgroud)
  1. Android的

单独在android项目下,我必须手动更新版本名称和版本号(int)

Version Name: 2.1.1
Version Number: 2
Run Code Online (Sandbox Code Playgroud)
  1. IOS

在iOS应用程序选项卡下,我还有2个字段需要填写.

Version Number: 2.1.1
Build Number: 0 //Not sure if I'm using this field correctly.
Run Code Online (Sandbox Code Playgroud)
  1. Windows Phone

在WMAppManifest属性对话框的"打包"选项卡上,我还必须提供版本号.

Version Number: 2.1.1.0
Run Code Online (Sandbox Code Playgroud)

versioning version-numbering xamarin xamarin.forms

16
推荐指数
1
解决办法
5918
查看次数

如果Traith在github上成功,则增加版本号

我用Python 编写了一个简单的脚本.

现在我想让travis检查我的代码.travis成功后,版本号应该增加.

到目前为止,我的脚本还没有版本号.我可以将它存储在对自动增量工作流程有意义的任何地方.

如何为Python代码执行此操作?

更新

它现在有效:

  1. 运行测试
  2. bumpversion
  3. 推送标签掌握

不幸的是,特拉维斯不支持"全部".这意味着如果我想运行几个Python版本的测试,在所有python版本的测试成功后我无法进行颠倒.

在我的情况下,我将检查Python2.7,直到travis解决了这个问题:https://github.com/travis-ci/travis-ci/issues/929

这是我的简单脚本:https://github.com/guettli/compare-with-remote

解决了 :-)

它现在有效:

  1. 开发人员推送到github
  2. Travis-CI运行
  3. 如果所有测试都成功,则颠倒会增加版本
  4. setup.py中的新版本被推送到github仓库
  5. 使用该工具将python包的新版本上传到pypi twine.

我在这里用github,travis和pypi解释我做CI的方式:https://github.com/guettli/github-travis-bumpversion-pypi

python versioning github travis-ci

16
推荐指数
1
解决办法
1295
查看次数

是否有npm版本预发布标识符?

有一个非常方便的npm version命令.除了喜欢争论major,minor而且patch它接受类似的参数prerelease,prepatch等等.
它说,该命令按照工作文档semver.inc的功能.

这些pre命令我有一个问题.

说我目前正在版本v1.0.0.
如果我运行npm version prerelease它会将版本提升到v1.0.1-0.

是否可以根据https://github.com/npm/node-semver#prerelease-identifiers为预发布标识符提供额外的agrument ?

我希望有类似的东西npm version prerelease alpha会碰到版本,v1.0.1-alpha.0但这不起作用.

versioning npm semantic-versioning npm-cli

16
推荐指数
3
解决办法
5559
查看次数

Javascript版本控制以避免缓存,这些做法有何不同?

如果我决定使用javascript或css文件的last_modified_time,并使用它的unix时间戳作为修改文件时胸围缓存的名称中的键.以下两种做法有什么区别?filename是:my_script.js,时间戳是:1321951817

1/File包含在: <script type="text/javascript" src="http://example.com/js/my_script.js?v=1321951817"></script> 因此,每次v更改时,查询字符串参数都会创建一个新的缓存.

2 /文件包含为: <script type="text/javascript" src="http://example.com/js/my_script.1321951817.js"></script> 文件名随每次修改而变化,重写规则删除时间戳并将请求的URL指向my_script.js

3/更新:基于以下答案的更多方法:文件被重命名并包括在: <script type="text/javascript" src="http://example.com/js/my_script.1321951817.js"></script> 文件名被更改并且使用NO REWRITE RULE.

问题:这两种技术本质上是否相同,或者使用查询字符串参数而不是直接文件名有任何优点/缺点.

javascript versioning

15
推荐指数
2
解决办法
2万
查看次数