标签: versioning

如何安全地更新实时网站

我们有一个相当简单的基于Django的网站来进行CRUD操作.我一直在本地进行测试和开发,然后在测试完成后检查发布和数据库模式更改到实时服务器上.我们最近在发布某些类型的更改时遇到了问题.想象一下以下一系列事件:

  1. 用户打开Web表单
  2. 网站已更新为需要此表单上的新字段
  3. 用户提交他们一直在处理的表单
  4. 服务器返回错误,因为它希望接收在步骤2中添加的新字段

其他网站如何处理这些问题?我的想法:

  • 在进行更新时使网站脱机.这并没有真正解决问题,因为用户可以在提交之前将网络表单打开无限长时间,但在一定时间之后,任何人都不可能提交表单.
  • 在非常低的流量时间进行自动更新.再次,这并没有真正解决问题,但我们的网站不是那么受欢迎,如果我们在3:00a做了更新,我怀疑会有很多用户.这种技术的一个问题是失败的自动更新.
  • 版本控制表单,以便服务器识别出正在提交旧表单并提供更加用户友好的响应.有自动化工具可以帮助解决这个问题吗?

思考?

versioning deployment django schema

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

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

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

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

我有以下问题:

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

versioning project-management visual-studio

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

如何重构.NET中序列化的类?

我有一个由BinaryFormatter序列化到磁盘的C#类,例如:

// Version 3.0
[Serializable]
public class Person
{
    public string FullName;

    [OptionalField(VersionAdded=2)]
    public string NickName;
    [OptionalField(VersionAdded=2)]
    public DateTime BirthDate;

    [OptionalField(VersionAdded=3)]
    public int Weight;
}
Run Code Online (Sandbox Code Playgroud)

稍后,我想通过以下一个或多个来重构此类
- 更改其名称
- 更改其命名空间
- 移动到另一个程序集

据我所知,只有具有完全相同名称,命名空间和程序集名称的类可用时,才能对二进制文件进行反序列化.

我该如何解决这个问题?
是否可以将反序列化映射到不同的类名,命名空间和程序集,而不会破坏版本容错序列化

.net versioning refactoring serialization binaryformatter

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

如何使用Scala(50.0/51.0)发出更新的类文件版本?

我想用新创建的类来测试新的类型检查字节码验证器scalac.

scalac 当前输出版本49.0类文件,但新版本检查验证程序仅在版本51.0以后是必需的.

我试图用ProGuard(实际上将它们转换为版本50.0)来"预验证"这些类,但我不确定新的验证器是否会自动回退到旧的类型推理验证器.

如何将类文件转换为版本51.0(或者如何在加载版本50.0类文件时找出使用哪个验证程序)?

java versioning scala bytecode class

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

如何强制重新下载Silverlight XAP文件

我试图找出如何强制浏览器重新下载.xap文件,如果新版本可用,但旧版本仍然在浏览器中缓存.

我见过另一个帖子: 你如何强制Firefox不缓存或重新下载Silverlight XAP文件?

最好的解决方案似乎是:

protected void Page_Load(object sender, EventArgs e)
{
    var versionNumber = Assembly.GetExecutingAssembly().GetName().Version.ToString();
    this.myApp.Source += "?" + versionNumber;
}
Run Code Online (Sandbox Code Playgroud)

但是,我没有得到this.myApp部分.那是什么样的对象?我很抱歉重新开放,但我希望人们能够发布完整的解决方案.

谢谢

versioning silverlight browser-cache xap

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

.net:DLL vs EXE的版本号?

我最近一直在版本化我的产品(exe)并每次在assemblyinfo.cs中增加内部版本号.

效果很好,我的产品目前是1.5.xx版本,因此每次成功构建时增加4位数.

现在我有我的DLL也是我的应用程序的一部分.

什么人会建议如何版本这些?我应该将这些版本与我的exe版本相同,即1.5.xx,还是应该创建另一个不同的版本号?

这是我目前有点困惑的地方.

当我的产品功能增加时,我可以提高1.5到2.0,但这会留下我的dll?

任何关于版本控制的建议都将不胜感激

谢谢

.net c# versioning build assemblyinfo

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

当使用semver(语义版本控制)时,如果更改Y,补丁版本Z(xyZ)应该返回0吗?

语义版本控制:

如果仅引入向后兼容的错误修复,则补丁版本Z(xyZ | x> 0)必须递增.错误修复被定义为修复错误行为的内部更改.

假设我有一个版本0.1.12的程序.如果我必须增加Y(0.Y.12),我应该将Z(0.2.Z)返回到0(变为0.2.0)还是保持不变(变为0.2.12)?

versioning version

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

自动检索EXE文件版本以嵌入NSIS安装程序元数据

我试图通过从我的可执行文件(在这种情况下,.NET应用程序)中自动检索版本信息来删除应用程序发布过程中的另一个步骤.

到目前为止,我已经能够获得有限的NSIS知识,但我很快就知道这还不够.

第1步:在可执行文件中声明版本信息

在AssemblyInfo.cs中,我声明[assembly: AssemblyVersion("1.0.0.1")].这成功地使版本信息出现在已编译的可执行文件中(在"文件版本"和"产品版本"下).

第2步:从可执行文件中检索版本信息

根据关于"GetFileVersion"的这篇文章,导入"FileFunc.nsh"允许您从可执行文件中检索版本信息.

使用的代码:

Section
    Var /GLOBAL version
    ${GetFileVersion} "C:\test.exe" $version
    ...
SectionEnd
Run Code Online (Sandbox Code Playgroud)

第3步:验证函数调用的内容

根据文档的5.1.7节,我应该能够在编译期间使用"!echo"命令打印到命令行.打印变量(或常量等)的内容之间的区别仍然让我困惑,所以我尝试了所有这四个选项:

!echo $version
!echo "$version"
!echo "${version}"
!echo ${version}
Run Code Online (Sandbox Code Playgroud)

这导致:

$version (InstallScript.nsi:15)
$version (InstallScript.nsi:16)
${version} (InstallScript.nsi:17)
${version} (InstallScript.nsi:18)
Run Code Online (Sandbox Code Playgroud)

第4步:声明安装程序元数据

根据4.8.3节,我应该可以通过VIProductVersion和添加安装程序元数据VIAddVersionKey.

VIProductVersion $version 
VIAddVersionKey "FileVersion" "$version"
Run Code Online (Sandbox Code Playgroud)

在构建的安装程序中,这会将字符串"$ version"添加到指定的字段中.


ToString()在NSIS中是否有相同的东西?如何访问变量的内容?变量名的打印是否意味着它没有内容?如何验证是否GetFileVersion正确调用,正确执行并返回值?

versioning metadata nsis

7
推荐指数
2
解决办法
4655
查看次数

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
查看次数