在git中寻找类似于“svn xx”的命令(在一些概念中也很困惑)

时间:2011-12-20 08:34:12

标签: git svn

我正在使用基准测试环境在公司代码存储库的trunk的工作副本上运行性能测试。

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

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

    所以我的问题是:

    • svn revision和git revision之间的相似且不同点是什么?
    • 我应该如何使用获取git中的修订号“(我知道它不是数字),就像我在上面的”1“中所做的那样???是git branch -v吗?
    • 我应该在git中使用什么来获取尽可能多的信息,因为我可以使用svn,就像我在上面的“2”中做的那样???是git remote -vgit branch -vgit log --max-count=1git statusgit diff吗?
    • 如何使用git diff 生成可在git和svn中使用的diff文件,以及支持应用diff 的其他编辑器?

    感谢。

2 个答案:

答案 0 :(得分:4)

  1. 主要区别是什么?

    这涵盖了一些差异:http://git.or.cz/course/svn.html#commit

  2. 我应该使用什么来获取git中的修订版“number”?

    git rev-parse HEAD
    

    这会将HEAD标记转换为修订版的哈希值。

  3. git remote -vgit branch -vgit log --max-count=1git statusgit diff是否足够?

    我想这取决于你需要什么信息。这应涵盖svn infosvn statussvn diff的大部分输出。

  4. 如何使用git diff生成可以在git和svn中使用的diff文件?

    git diff -p > a.diff将创建一个标准的统一差异。 Svn不以正常方式处理补丁(git通常可以读取svn生成的补丁)。这可能有助于您转换为svn补丁格式:Git format-patch to be svn compatible?

答案 1 :(得分:0)

关于发布部分的修订,git的常见做法是使用git tag -a x.x.xgit describe的组合

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