我看了一下API版本的最佳实践?,但我不太相信答案,所以我再次用更具体的例子质疑版本控制部分.我有两个URI(一个版本作为URI的一部分,一个没有):
http://xxxx/v1/user/123 -> favored solution in discussed thread
http://xxxx/user/123
Run Code Online (Sandbox Code Playgroud)
我怀疑第一个链接是否表达了REST的想法.我觉得很http://xxxx/v1/user/123困惑,因为它表明有一天会有更高的api版本http://xxxx/v2/user/123.但这在REST术语中没有意义,api版本本身是HTTP 1.0或1.1,它已经在HTTP请求中发送.这个以REST资源为中心的视图与其他api接口(如SOAP或Java接口)非常不同(其中通常有限定名称的api版本).
在REST中,版本控制唯一有意义的是该资源的表示(例如,添加或删除新字段).此版本控制属于内容协商的部分,如:
http://xxx/user/123 + HTTP 'Accept' Header -> Content negotation through header
http://xxx/user/123?v=1 -> for perma-links/hyperlinks
Run Code Online (Sandbox Code Playgroud)
人们还可以争辩说,这样的版本内容协商可能是路径中URI的一部分,但我觉得它反直觉,因为你最终可能会为同一资源使用不同的URI,并且必须在某些时候维护重定向.
总结:在REST URI中,没有api版本,只有资源表示的版本控制.表示版本信息属于内容协商(作为queryParam或HTTP'接受').
你怎么看?你不同意/同意哪些事情?
我想使用maven发布插件发布一个快照项目'foo-1.0-SNAPSHOT'.该项目取决于尚未发布的第三方模块"bar-1.0-SNAPSHOT".我在项目的pom.xml中使用选项'allowTimestampedSnapshots'来允许带时间戳的快照,但我认为第三方模块(bar)没有时间戳,除非我自己构建它,因为maven仍抱怨未解决的SNAPSHOT依赖项.
有没有办法释放项目foo,无论依赖SNAPSHOT项目如何,如果不是,我怎么能为第三方项目添加时间戳?
我应该检查我的.project和.classpath文件吗?
我的朋友告诉我,我应该只检查.java文件和build.xml以保证可移植性.他说".classpath会让你在不同环境下的可移植性降低得多..project完全是你当地的日食设置"
我同意他,但部分同意.
- 不检入.project文件会降低我的开发效率(我不能简单地从目录"导入"项目代码)
- 如果我的build.xml是小心写的,那么不检入.classpath文件似乎对我(?)没问题.
有人想在这里分享他们的经历吗?
假设开发团队包括(或使用)图形艺术家,他们创建了产品中的所有图像.这些东西包括图标,位图,窗口背景,按钮图像,动画等.
显然,构建软件所需的一切都应该采用某种形式的版本控制.但是大多数开发人员的版本控制系统主要是为基于文本的信息而设计的.图形人员应该使用与编码人员相同的版本控制系统和存储库吗?如果没有,他们应该使用什么,以及保持一切同步的最佳方法是什么?
此问题与设置.NET Core项目的版本号非常相似,但不相同.在编写(1.1)和VS2017时,使用最新的稳定版.NET Core,.NET Core已从基于JSON的项目文件切换到CSPROJ文件.
所以 - 我想要做的是建立一个CI环境,我希望能够在构建之前修改某些内容,以使用正确的版本号标记我的构建.
如果我使用这样的属性旧(SharedAssemblyInfo.cs技巧):
[assembly: AssemblyFileVersion("3.3.3.3")]
[assembly: AssemblyVersion("4.4.4.4")]
Run Code Online (Sandbox Code Playgroud)
某处项目时,我得到的
CS0579 - Duplicate 'System.Reflection.AssemblyFileVersionAttribute'
和
CS0579 - Duplicate 'System.Reflection.AssemblyVersionAttribute'
错误的时候建设.
在深入挖掘它时,我发现在构建过程中有一个看起来像这样的文件(在构建之前它不存在)\obj\Debug\netcoreapp1.1:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("TestApplication")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyDescriptionAttribute("Package Description")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.1.99.0")] …Run Code Online (Sandbox Code Playgroud) 我想知道你是否有人知道一个工具,它允许我在我的代码中选择一行,然后在提交的基础上查看该行的历史列表视图.
谁知道这样的工具?
我需要编写一个gradle脚本来在每次提交时自动对我的应用程序进行版本控制.我还需要在测试人员的应用程序中包含提交哈希作为参考.
我很困惑自动版本控制通常如何工作.有人可以解释自动转换过程吗?
我通常在C#中编写代码的所有部分,在编写序列化的协议时,我使用FastSerializer快速高效地序列化/反序列化类.它也非常容易使用,并且非常直接地进行"版本控制",即处理不同版本的序列化.我通常使用的东西,看起来像这样:
public override void DeserializeOwnedData(SerializationReader reader, object context)
{
base.DeserializeOwnedData(reader, context);
byte serializeVersion = reader.ReadByte(); // used to keep what version we are using
this.CustomerNumber = reader.ReadString();
this.HomeAddress = reader.ReadString();
this.ZipCode = reader.ReadString();
this.HomeCity = reader.ReadString();
if (serializeVersion > 0)
this.HomeAddressObj = reader.ReadUInt32();
if (serializeVersion > 1)
this.County = reader.ReadString();
if (serializeVersion > 2)
this.Muni = reader.ReadString();
if (serializeVersion > 3)
this._AvailableCustomers = reader.ReadList<uint>();
}
Run Code Online (Sandbox Code Playgroud)
和
public override void SerializeOwnedData(SerializationWriter writer, object context)
{
base.SerializeOwnedData(writer, context);
byte serializeVersion = 4; …Run Code Online (Sandbox Code Playgroud) (与版本化数据库模式无关)
与数据库接口的应用程序通常具有由来自许多表的数据组成的域对象.假设应用程序支持这些域对象的CVS意义上的版本控制.
对于某些仲裁域对象,您将如何设计数据库模式来处理此要求?有经验可以分享吗?
如果我记得在Jasmine中有一个命令会将我正在运行的Jasmine的确切版本记录到控制台,但我不记得它是什么.我很肯定我在某个地方见过这个,现在我真的需要它,我无法在任何地方找到它.有谁知道它是什么?
编辑:已发布的使用解决方案jasmine.getEnv().versionString()无法正常工作 - 对于读取此问题的任何mod,将更好地解决该问题作为一个新问题开始,还是继续在这里?