git-svn:自动导入/创建 svn 修订版作为 git 标签

2024-01-05

我正在使用 git-svn 来处理 svn 存储库。吉特master分支是svn的镜像trunk分支(唯一使用的 svn 分支),即 master 分支和 trunk 分支上的元素之间存在一对一的关系。

我想要有与 svn 修订相对应的 git 标签,这样我就可以做类似的事情git diff r123 workbranch看看我与 svn 修订版 123 相比做了什么。

当我这样做时,修订没有被标记git svn rebase,所以我创建了以下脚本,在 svn rebase 后运行:

#!/usr/bin/perl 

use strict;
use warnings;

open(PIPE, "git log master |");
# Format for the pipe output:
# ...
# commit 6b24b8fdc6a25d35b01140dc1ac054697133423d
# ...
#      git-svn-id: https://server.example.com/svn/project/trunk@594 164096ca-3471-41d1-a9ce-9541462a8c31
# ...
my $commit = "";
my $i = 0;
foreach my $line (<PIPE>) {
    if ($line =~ /^commit ([\da-f]+)/) {
        $commit = $1;
        next;
    }
    next unless $line =~ /^\s+git-svn-id: .*\/trunk\@(\d+) /;
    my $git_svn_id = $1;
    run("git", "tag", "-f", "r$git_svn_id", $commit);
    last if $i++ == 20;
}
close(PIPE);

sub run {
    print join(' ', @_), "\n";
    return system(@_);
}

这个脚本完成了工作,但我每次都必须手动运行它,并且我(任意)在检查最后 21 个修订时限制了它,因此理论上存在遗漏某些修订的风险(但我会从打印中看到这一点) 。

问题:有什么方法可以自动执行此操作,以便我只需运行git svn rebase所有导入的修订都会在 git 中标记吗?任何hooks http://git-scm.com/book/en/Customizing-Git-Git-Hooks我可以用?

聚苯乙烯 是的,我知道 svn find-rev,但我绝对不想编写像这样复杂的命令git diff $(git svn find-rev r123) $(git svn find-rev r124)而不仅仅是git diff r123 r124.


这是一个疯狂的想法:陷阱bash命令并自动替换任何r1234带有 SHA 哈希值的字符串:

shopt -s extdebug

enhance_rev_parse () {
    [ -n "$COMP_LINE" ] && return  # do nothing if completing
    case "$BASH_COMMAND" in
    *r[0-9]*)
        eval $(echo "$BASH_COMMAND" | sed -e 's/r[0-9][0-9]*/$(git svn find-rev &)/g')
        return 1
        ;;
    esac
}

trap 'enhance_rev_parse' DEBUG
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git-svn:自动导入/创建 svn 修订版作为 git 标签 的相关文章

  • 每次我们调用浏览器时,在 selenium 中使用 driver.manage().window().maximize() 是否好?

    We use driver manage window maximize 最大化浏览器 我在网上看到一些使用的例子driver manage window maximize 尽管不需要最大化浏览器 例如 gmail 登录 我还看到使用 se
  • 使用 rvest 进行抓取 - 当标签不存在时,使用 NA 完成抓取

    我想解析这个 HTML 并从中获取这个元素 a p标签 与class normal encontrado b div with class price 有时 p某些产品中不存在标签 如果是这种情况 NA应添加到从该节点收集文本的向量中 这个
  • 我如何在 Cypress 中使用软断言

    我已经从 npm 配置了软断言 npm i soft assert 现在我的 package josn 有 soft assert 0 2 3 我想使用软断言功能 softAssert actual expected msg ignoreK
  • Azure Runbook 输出到电子邮件

    我正在尝试将 VM 状态的输出从 Azure 自动化 Runbook 发送到电子邮件中 我使用以下代码 function Send EMail Param Parameter Mandatory true String EmailTo Pa
  • 我想了解 NfcV ISO-15639 的操作

    我是 NFC 技术新手 我很难理解如何操作块 byte cmd new byte byte 0x20 FLAG byte 0x21 WRITE SINGLE BLOCK COMMAND byte 0x00 byte 0x00 byte 0x
  • 使用 UiPath 循环 Excel 文件中的 URL

    我尝试了几种方法 但不知怎的 它们看起来不干净 我有一个 Excel 格式的 URL 文件 一列中有 400 多个 URL 我希望 UiPath 从该文件中读取并一一浏览这些 URL 我尝试让 导航到 从从 Excel 读取的变量中读取 但
  • 解析 XML 标签不匹配时出错

  • Git-svn:批量删除孤立的远程分支

    我正在处理的 SVN 项目 通过 git svn 有经常创建的分支 然后与主干重新集成 然后删除 现在项目大约有10个分支没有被删除 但是在git中 gitbranch r显示大约有50个 我可以一次删除这些 检查它们是否仍然存在于 svn
  • 从文本块中提取相关标签/关键字

    我想要一个特定的实现 以便用户提供如下文本块 要求 使用 Linux Apache 2 的 LAMP 环境的工作知识 MySQL 5 和 PHP 5 Web 2 0 标准知识 熟悉 JSON 使用框架 Zend OOP 的实践经验 跨浏览器
  • Visual Studio Code 删除标签突出显示

    我想当光标位于标签上时删除标签的突出显示 例如 Visual Studio Code 显示这样的段落标签 lt p gt 我希望它像这样显示 p 请参阅图片示例 示例图像 https i stack imgur com jnU8e png
  • 使用 git-svn (或类似的)*只是*来帮助进行 svn 合并?

    我的项目中出现了一些复杂的颠覆合并 已经分开很长时间的大分支 Svn 给出了太多的冲突 其中一些看起来是虚假的 鉴于git因卓越的合并体验而受到称赞 用起来有什么好处吗git svn just for使合并更易于管理有何好处 你能推荐其他选
  • 如何使用 phpMyAdmin 自动导出 mySQL 数据库

    是否可以使用 phpMyAdmin 自动导出单个数据库 当我尝试从外部脚本 如 php 创建 sql 文件时 生成的 sql 文件看起来很干净 但导入时会导致应用程序出现问题 当我使用 phpMyAdmin 通过使用 Export 创建类似
  • 使用 XPath 忽略/跳过已知或所有从属标签

    我使用 XPath 和 Hpple libxml2 来解析 iOS iPhone 操作系统中的 HTML 我现在想忽略某个标签 例如粗体标签 b 解析文档时 例如从代码来看 div foo b bar b div 应选择字符串 foo 和
  • 在 git 中标记多个分支?

    我有一个有两个分支的 git 存储库 一个用于制造 测试的代码 另一个是实际的生产固件 它们几乎相同 现在是时候剪切一个版本并发送给制造商了 所以我自然想在两个分支上放置一些适当的标签 但是 似乎 git 不允许我在两个分支上放置相同的标签
  • .NET 中有什么方法可以以编程方式侦听 HTTP 流量吗?

    我正在使用浏览器自动化来测试网站 但我需要验证来自浏览器的 HTTP 请求 即图像 外部脚本 XmlHttpRequest 对象 有没有一种方法可以以编程方式实例化代理以供浏览器使用以查看其发送的内容 我已经在使用 Fiddler 来监视流
  • 将 svn 存储库添加到现有的 git 存储库中?

    我知道你可以使用 git svn init 来跟踪 svn 存储库 但这是为了你想创建一个全新的存储库 我的情况是 我目前已经有一个现有的 git 存储库 并且希望通过将 svn 存储库设为我当前 git 存储库中的远程分支来跟踪 svn
  • 工作流程系统[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我刚刚开始在一家新的通信公司工作 我们正在寻找一个工作流程 内联网系统来管理工作和流程 基本上 我们从客
  • 以编程方式最小化/恢复窗口,跳过动画效果

    我需要对窗口列表执行多项操作 最小化其中一些 恢复其他 以便立即在两组或多组窗口之间切换 这样做的问题是最小化和恢复窗口时可以看到的动画 整个过程看起来很糟糕 所有这些动画都进进出出 上下移动 但是 我无法禁用这些动画 因为这是针对其他计算
  • 如何让VLOOKUP在VBA中选择到最低行?

    希望自动在单元格中插入 VLOOKUP 公式 录制宏时 我指示它使用相同的公式填充下面的列 效果很好 但是 当 VLOOKUP 搜索的表发生变化 更多或更少的行 时 就会出现问题 在记录时 VLOOKUP 下降到表中的最后一行 273 但是
  • 如何升级 Windows 中 git svn 使用的 SVN 版本?

    我的公司正在将SVN升级到1 7 检查git svn version显示正在使用的SVN版本是1 4 6 我想获得 git svn 使用的 SVN 版本接近 1 7 但是 我没有看到有关更新 git svn 使用的 SVN 版本 在 Win

随机推荐