自动将 Git 同步到 SVN

2024-02-26

Summary:

我想要完成的是定期推送bare将 Git 存储库放入 Subversion 中,以便其他人可以使用无人值守的脚本来检查它。我不需要相反的方向,SVN -> Git。

我希望有人能帮助我完成这件事。我见过的其他线程非常接近我所需要的,但没有一个有完整的、合理的解决方案。将现有的 git 存储库推送到 SVN https://stackoverflow.com/questions/661018/pushing-an-existing-git-repository-to-svn非常有帮助。

我的问题:

我的雇主维护着一个 Subversion 服务器,该服务器具有异地备份、冗余功能,并且可以通过 Web 界面访问,以便我的同事和经理可以进行临时审查。

我在 Git 下有六个项目。 (我有多台机器,我做了很多推测性分支,而且我经常提交。而且,Xcode 与 Git 一起工作得更好。我们的 SVN 管理员同意 Git 对我来说几乎是不可协商的。)我的台式机(由我的雇主及其场所拥有)上的裸存储库,所有工作副本都跟踪。

我的雇主真的希望我不那么做;如果他能提供 IT 级的 Git 服务器,他就会提供。他的妥协是我想办法得到launchd (cron)任务将我的桌面的裸 Git 存储库同步到 SVN 服务器上的并行存储库。

我提出的方法(可能不令人满意):

我还没有找到任何将裸露的 Git 存储库克隆到 Subversion 的指南,更不用说在无人值守的情况下进行操作了。我的猜测是,我必须通过工作副本来完成所有工作,其中 SVN 同步(但可能不是自动化)是一个已解决的问题。

我天真的过程是:

  1. 克隆一个工作副本never编辑成/dont-touch,来自裸仓库。
  2. 在没有编辑的情况下/dont-touch目录,git svn init <svn-url> -s
  3. 做必要的事git svn fetch and git svn rebase dance.
  4. 每天晚上,根据由launchd:
    4.1. cd /dont-touch
    4.2. git fetch
    4.3. git svn dcommit

我所看到的问题是:

我无知

说够了。

这个类别包括了所有我没有想到的东西。

互动性

我们希望能够进行此设置,让同步脚本每 24 小时触发一次,然后忘记它。

我认为,在手动 (1-3) 设置期间,SVN 身份验证将被缓存并在第一次通过后自行处理。 Git 身份验证不会成为问题,因为dont-touch工作副本将由与裸存储库相同的用户拥有,并且可以通过file:///.

但我对将 Git 同步到 SVN 的印象是它很脆弱,并且需要交互式的操作来避免损坏 SVN 存储库,更不用说简单地让它工作了。


你可以看看SubGit http://subgit.com作为 git-svn 的替代品。从 2.0 开始,它允许将本地 Git 与远程 Subversion 存储库链接。你运行一次:

$ subgit configure --svn-url <URL_of_SVN_project_root> repos.git
# edit repos.git/subgit/config, repos.git/subgit/authors.txt, and repos.git/subgit/passwd

$ subgit install repos.git
# now just work with repos.git as with usual git repository, but prefer "git pull --rebase" rather that "git pull" and "git merge --no-ff" rather than "git merge"

其中 URL_of_SVN_project_root 是包含 trunk/branches/tags 目录的 URL。

然后克隆存储库“repos.git”并从中推送/拉取(可以选择设置工作副本 git configthis way http://subgit.com/book/index.html#N2043D)。 “repos.git”中的特殊 Git 挂钩会将其与 SVN 同步。请注意,目前 SubGit 2.0 处于 eap 阶段,但我认为它比您描述的 git-svn 设置更可靠。

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

自动将 Git 同步到 SVN 的相关文章

  • 第一次使用node.js - “ReferenceError:节点未定义”

    我刚刚安装了node js 我尝试编写应该检查版本的node v 但它不起作用 这是输出 gt node v ReferenceError node is not defined at repl 1 2 at REPLServer self
  • VS 2015 + Bower:在防火墙后面不起作用

    Problem 在 Visual Studio 2015 中 使用 Bower 我的包在防火墙后面时恢复失败 并出现类似以下内容的错误 ECMDERR 无法执行 git ls remote tags heads git github com
  • Jenkins 可以检测到任何 svn 用户每次提交代码吗?

    Jenkins 可以检测到任何 svn 用户每次提交代码吗 我想知道每次 Jenkins 提交 svn user 时 有什么方法或 jenkins 插件吗 现在我用svn updateJenkins 中的 cmd 来更新 svn 您可以按照
  • `pyqt5'错误`元数据生成失败`

    我正在尝试安装pyqt5使用带有 M1 芯片和 Python 3 9 12 的 mac 操作系统 我怀疑M1芯片可能是原因 我收到一个错误metadata generation failed 最小工作示例 directly in the t
  • 从 python 检测 macOS 中的暗模式

    我正在编写一个 PyQt 应用程序 我必须添加一个补丁 以便在启用暗模式的 Macos 上可以读取字体 app QApplication Fix for the font colours on macos when running dark
  • apt-get 无法在 ubuntu dockerfile 中工作

    我对 docker 相当陌生 正在尝试通过编写自己的镜像来学习 并且目前正在阅读 Docker 的实际操作 ISBN 1633430235 在我自己的代码和书中的示例 第 146 页 中 我想通过 dockerfile 安装 git My
  • “pdo_mysql”已禁用,我无法启用它。我在 iMac 7.1 OSX 10.6.8 上安装了 MAMP v. 3.0.4

    pdo mysql 已禁用 我无法启用它 我在 iMac 7 1 OSX 10 6 8 上安装了 MAMP v 3 0 4 在我的 phpinfo 页面上 我可以看到唯一启用的 PDO 是 sqlite 如果我查看 php 5 5 10 扩
  • 带有 LDAP 身份验证的 SVN 不起作用

    我首先从我的设置开始 为此我们有 2 台服务器 Server1 将用于所有源代码 文件等 在 Server2 上 我们拥有所有用户信息和登录信息 两台服务器都运行在 Centos 6 4 上 现在我们要在 server1 上设置一个 SVN
  • rsync 可以支持一对多同步吗?

    我可以在数百个网站上同步我所工作的 模型 网站的更改吗在同一台服务器上 using rsync 我会更新通用模板文件和 JS 脚本 如果可能的话我该如何设置 我在 Hostgator 专用服务器上 运行 Apache 请阅读我对下面已编辑问
  • SSDT SQL Server 数据库项目中用于架构比较的命令行/API?

    在 Visual Studio 2012 中 我们有Schema Compare http msdn microsoft com en us library hh272690 28v vs 103 29 aspx in SSDT http
  • 如何使用 AFNetworking 2 按严格的顺序发送请求?

    我正在进行同步以将 sqlite 数据库镜像到服务器数据库 我有一个主从表 其中的详细信息必须尽快发送到服务器 但是 细节 3 可能会先于细节 2 到达 我需要模仿对文档执行的步骤并尊重操作的顺序 当记录保存在本地时 我会发送通知 然后发布
  • TortoiseSVN 不要求身份验证?

    我已经在conf文件中设置了一个新的SVN存储库 运行SVNServe anon access none SVNServe 忠实地正确地做到了这一点 但是当我尝试使用 TortoiseSVN 浏览存储库时 它只是说不允许访问 它不应该要求我
  • 创建一个空分支?

    我有一个包含项目的 git 存储库 我现在要对这个项目进行大规模的修改 如何为这次大修创建一个空白的新分支 然后当完成时 如何将这个分支切换到master 使用 checkout orphan 命令 git checkout orphan
  • 如何在 MacBook Pro 上的 Docker 容器内运行 tkinter?

    我正在尝试运行一个使用以下命令的 python GUI 应用程序tkinter我的 MacBook Pro 上的 docker 容器内的模块 所以我安装了XQuartz https www xquartz org 并跟随本教程 https
  • 如何使用 Git 跟踪目录而不是文件?

    我最近开始使用 Git 但只有一件事遇到了麻烦 如何在不跟踪目录内容的情况下跟踪目录 例如 我正在开发的网站允许上传 我想跟踪上传目录 以便在分支等时创建它 但显然不是其中的文件 在开发分支中的测试文件或主控中的真实文件 在我的 gitig
  • 为所有子文件夹设置 git 配置值

    我知道可以设置每个存储库的配置来覆盖用户级配置 即 path to my repo gitconfig覆盖 gitconfig 是否可以设置 git 配置来覆盖给定文件夹的所有子文件夹的用户级设置 即 我有 topLevelFolder1
  • 两将协议

    我正在尝试在不可靠的通道上制定一个协议 基本上两方 A 和 B 必须同意做某事 所以这就是两位将军的问题 http en wikipedia org wiki Two Generals 27 Problem 由于没有万无一失的解决方案 我正
  • 自定义 SSH 端口上的 Git

    我的 VPS 提供商建议我将 SSH 端口保留为他们默认分配的自定义端口号 不是 22 问题是 虽然我知道我可以在创建远程配置时提供端口号 但在进行 Git 克隆时似乎无法提供相同的操作 我在用gitolite https wiki arc
  • Mac 上的 Qt — 如何访问帮助菜单中的“搜索”

    我正在将我的 Qt 应用程序移植到 Mac OS X 在 Windows Linux 上 我使用 QLineEdit 在帮助菜单中提供搜索功能 In Mac OS X I saw something like this is built i
  • 使用 C 在 OS X 中获取其他进程的 argv

    我想获得其他进程的argv 例如ps 我使用的是在 Intel 或 PowerPC 上运行的 Mac OS X 10 4 11 首先 我阅读了 ps 和 man kvm 的代码 然后编写了一些 C 代码 include

随机推荐