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 标签 的相关文章

  • 创建单个随机 Magento 优惠券

    我遇到了一些麻烦 我想要做的是每次有人订阅我们的时事通讯时 在 Magento 中自动生成一个随机优惠券代码 这张优惠券可减 10 美元 并且有exp 订阅后两周的日期 因此 我正在尝试编写一个简单的脚本 当提交 订阅我们的时事通讯 表单时
  • 将 git dcommits 切换到 svn 分支

    I had master dcommit到 和rebase来自 颠覆trunk 我创建了一个中间 Subversion 分支tc 合并来自 2 个不同分支的更改 使用 git branch master git svn branch tc
  • PowerShell脚本将标签值从一个文件替换到另一个文件(标签值)

    我需要使用 powershell 脚本将标签值从另一个文件替换到一个文件中 Example File A
  • 如何确定 Android UI 元素的 XPATH。硒 + Appium

    我目前正在使用 Appium 和 Selenium 自动化 Android 应用程序 并且在通过 ID 定位元素时遇到了一些问题 我想使用 XPATH 但不知道如何获取 android UI 元素的 XPATH 有谁知道如何确定元素的 XP
  • 如何将IDL导入到Delphi中?

    我如何导入接口定义语言 idl 文件存入Delphi 将类型和接口转换为 pascal 文件 我试过了 File Open 它只显示 idl 文本文件的文本 Project 添加到项目 它只是 就像 添加了一个 idl文本文件到项目 成分
  • 如何将 git-svn 与 svn+ssh url 一起使用

    我喜欢在cygwin中使用git svn clone使用我们公司 svn 存储库的命令 这个的网址是svn ssh svn
  • 取消选择所有复选框后,客户端过滤器显示所有项目

    加载时 复选框将取消选中 并显示所有列表项 当选中过滤器时 将显示相关的列表项 我遇到的问题是 当您再次取消选中所有复选框时 我需要显示所有项目而不是隐藏 这是我的小提琴 http jsfiddle net amesy B9Hnu 124
  • 关于如何使用 selenium webdriver 自动执行 google 电子表格的示例 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 这只是一个知识共享示例 这是我使用 selenium webdriver 通过 gmail 实现 google 电子表格自动化的示例 pac
  • Visual Studio Code 删除标签突出显示

    我想当光标位于标签上时删除标签的突出显示 例如 Visual Studio Code 显示这样的段落标签 lt p gt 我希望它像这样显示 p 请参阅图片示例 示例图像 https i stack imgur com jnU8e png
  • PHP 数字:小数点仅在需要时可见

    我想知道是否存在一些函数可以自动按十进制格式化数字 所以如果我有 所以我的答案是 如果我的数据库中有 DECIMAL 数据格式 仅当它
  • 如何使用 phpMyAdmin 自动导出 mySQL 数据库

    是否可以使用 phpMyAdmin 自动导出单个数据库 当我尝试从外部脚本 如 php 创建 sql 文件时 生成的 sql 文件看起来很干净 但导入时会导致应用程序出现问题 当我使用 phpMyAdmin 通过使用 Export 创建类似
  • Android – 同一应用程序的多个自定义版本

    部署 Android 应用程序的多个自定义版本的最佳方法是什么 目前我有一个脚本来交换资源文件夹以获得我的应用程序的自定义版本 它工作得很好 但所有自定义版本在 AndroidManifest xml 中仍然具有相同的包名称 因此 不可能同
  • 如何移动到浏览器窗口中不可见的geb页面内容?

    如何让 geb webdriver 移动到页面上可能不在浏览器视图中的元素 该元素存在于页面上并显示 但该元素可能会出现在页面底部 并且浏览器需要向下滚动才能看到该元素 import geb Page class myPage extend
  • 将 svn 存储库添加到现有的 git 存储库中?

    我知道你可以使用 git svn init 来跟踪 svn 存储库 但这是为了你想创建一个全新的存储库 我的情况是 我目前已经有一个现有的 git 存储库 并且希望通过将 svn 存储库设为我当前 git 存储库中的远程分支来跟踪 svn
  • 在yaml中写入#(在字符串中)

    我是新使用 yml 文件 用于我的框架中的翻译 我试图在翻译中添加一个 将是一个推特分享 blabla 这可能吗 因为文件将其翻译为评论 只需将值放在单引号或双引号内 它就不会被视为注释 就像是 en twitter share hasht
  • 使用php表单更改href链接

    我正在制作一个带有搜索栏的网站 我想让搜索栏在 搜索 并显示结果后具有交互性 所以我希望 href 根据正在使用的 Id 进行更改 例如 有人搜索 Pinecones 如果它在数据库中 它将有一个 ID 在本例中是 4 一旦他们搜索它 它就
  • 如何使用 Java 到 TestRail 的 API 将测试用例添加到现有测试运行中?

    我在执行期间创建了一个测试运行 我想在它们开始执行的同时添加测试用例 如果测试用例尚不存在 则已创建 并且该测试用例应该与其他测试用例一起添加到现有的测试运行中 我尝试过使用setCaseIds在运行期间和更新运行之后 但这会覆盖现有的运行
  • VBS 与 PowerShell:哪个更轻?

    如果我需要一个可以在系统中以最少的努力执行的脚本 我会选择哪个 通过查看任务管理器中的进程 内存 私有工作集 wscript exe 2 068Kpowershell exe 33 144K Thanks 这里存在工作守恒定律 如果机器做的
  • Chrome 扩展发送键

    有没有办法从 chrome 扩展模拟按键 例如 当我单击扩展按钮时 我可以指定将 ABC 键发送到浏览器窗口 不幸的是没有 这是一个 JavaScript 问题 Chrome API 不提供任何帮助 您所能做的就是调度一个按键事件 请参阅这
  • 如何使用 phantomjs 使用文件中的持久 cookie

    我需要一些身份验证才能访问特定的网址 在浏览器中我只需要登录一次 至于其他可以使用cookie中的会话id的相关url不需要转到登录页面 同样 我可以使用 cookie 文件中生成的 cookie cookies file cookies

随机推荐