查找类似于“的命令”;“svn xx”;在git中(在某些概念中也有混淆)

查找类似于“的命令”;“svn xx”;在git中(在某些概念中也有混淆),git,svn,Git,Svn,我正在使用一个基准测试环境在公司代码库主干的工作副本上运行性能测试 我们有一个大型ant构建文件,用于管理整个测试过程(使用示例数据构建数据库;构建、部署和运行产品;构建、部署和运行研磨机和监控工具;对各种类型的信息进行采样)。在此过程中,有两个步骤与SVN相关: 构建产品时,基准ant脚本调用工作副本中的ant构建文件,并在自定义任务中调用svn info,以获取本地工作副本的当前修订号(来自输出中的“当前修订号为:12345”行),稍后将使用它来命名日志归档文件 开始采样时,基准ant脚本将

我正在使用一个基准测试环境在公司代码库主干的工作副本上运行性能测试

我们有一个大型ant构建文件,用于管理整个测试过程(使用示例数据构建数据库;构建、部署和运行产品;构建、部署和运行研磨机和监控工具;对各种类型的信息进行采样)。在此过程中,有两个步骤与SVN相关:

  • 构建产品时,基准ant脚本调用工作副本中的ant构建文件,并在自定义任务中调用
    svn info
    ,以获取本地工作副本的当前修订号(来自输出中的“当前修订号为:12345”行),稍后将使用它来命名日志归档文件
  • 开始采样时,基准ant脚本将首先在工作副本目录中运行
    svn info
    svn status
    svn diff
    ,并将输出保存到日志文件中
  • 现在其他人希望基准ant脚本也能支持git。因此脚本应该检查它是svn还是git(这一步很简单),然后运行命令来收集相应的版本控制信息(与这一步混淆)

    所以我的问题是:

    • svn修订版和git修订版的相似点和不同点是什么
    • 我应该用什么来获得git中的修订版“数字”(我知道它不是数字),就像我在上面的“1”中所做的那样???是git branch-v吗
    • 我应该在git中使用什么来获得尽可能多的信息,就像我在上面的“2”中所做的那样???
      git remote-v
      git branch-v
      git log--max count=1
      git status
      git diff
      是否足够
    • 如何使用
      git diff
      生成一个diff文件,该文件既可以在git和svn中使用,也可以在其他支持应用diff的编辑器中使用
    谢谢

  • 主要区别是什么

    这涵盖了一些差异:

  • 我应该使用什么来获取git中的修订版“编号”

    这将
    HEAD
    标记转换为修订的哈希

  • git remote-v
    git branch-v
    git log--max count=1
    git status
    git diff
    是否足够

    我想这取决于你需要什么信息。这应该涵盖来自
    svn info
    svn status
    svn diff
    的大部分输出

  • 如何使用git diff生成一个可以在git和svn中使用的diff文件

    git diff-p>a.diff
    将创建标准的统一差异。Svn不会以正常方式处理修补程序(git通常可以读取Svn生成的修补程序)。这可能有助于您转换为svn修补程序格式:


  • 对于发布部分的修订,git的常见做法是使用和的组合


    比如说,当您准备好标记构建时,您可以执行
    git-tag-a 1.0.0
    ,然后在提交另外5次提交后,通过
    git-push-tags
    将标记推送到原始repo,
    git descripe
    将返回类似于
    1.0.0-5-g13f0e88
    的内容,您可以将其用作版本字符串。

    如果您正在检查目录是否位于git repo中,您可能会发现这一点也很有用,一个好方法是使用
    git重新解析——在工作树
    中,而不仅仅是查找
    .git
    目录。谢谢你的努力。对于2,这是本地回购协议的修订版吗?我们需要修订版,因为我们需要知道我们构建产品的版本,以便以后可以查看代码更改。对于4,由于整个测试过程是由ant脚本自动处理的,并且我们每天生成10个以上的测试档案,因此最好是自动转换diff文件。然而,似乎没有一个好的/自动的方法使diff兼容(尽管这应该是SVN的错误)…此外,对于修补问题,如果没有任何解决方法,我们可以接受修补程序仅适用于测试人员正在使用的版本控制系统。(2)是的,
    HEAD
    是当前签出的,因此,使用
    git rev parse HEAD
    为当前提交获取哈希id。(4) 这个脚本可能适合您:我想我以前已经让它工作了,但从未在任何实际工作中使用过。gist.github.com/1520442我发现hunk header中的函数/类描述阻止SmartSVN识别差异文件。所以我改变了剧本,做了一点小小的改变。这样安全吗?
    git rev-parse HEAD