与 SVN 上游同步工作[关闭]

2024-04-04

我正在开发一个使用开源项目代码的项目。要求之一是将尽可能多的代码推回到上游。

远程项目正在使用 Subversion(不是很好)。

我当前的设置如下所示:

[Remote SVN] (git svn fetch)-> [My public Git] <-(push/pull)-> [My dev. Git]
                                    VV
                                  (pull)
                                    VV
                               [Testing grid]

编辑11.7。 - 重新提出问题

我的问题是本地公共仓库和 svn 上游的共存。

我必须提供3个公共分支:

  • 保守稳定
  • 实验稳定
  • 发展

这些分支现在是线性的(开发变得实验稳定,实验变得保守),但目标是标准的三头合并方法。由于它们的公共性质,我无法重新设置这些分支的基础。

现在与此完全正交,我正在尝试以某种方式使向上游发送补丁变得更容易。从我的树枝中挖出它们很慢而且容易出错。

我当前的典型工作流程是:

  • 在顶级开发分支上实现一些功能
  • 测试和修复功能
  • 测试并修复被这个新功能破坏的其他功能(实际上发生了很多)
  • 确定这是否是上游可以接受的东西(30:60 是:否)
  • 做点什么(我通常只是写一个新的 TODO)

上游的另一个问题是他们接受不同分支的补丁(我的公共分支基于他们的稳定分支)。一旦补丁到达稳定分支,我就可以忘记它们的存在,但在此之前我仍然需要将它们保留在本地。


The git svn文档 http://git-scm.com/docs/git-svn建议在处理 Subversion 分支时采用以下工作流程:


# Clone a repo (like git clone):
git svn clone http://svn.example.com/project -T trunk -b branches -t tags

# Append svn:ignore settings to the default git exclude file:
git svn show-ignore >> .git/info/exclude

# View all branches and tags you have cloned:
git branch -r

# Create a new branch in SVN
git svn branch waldo

# Reset your master to waldo:
git reset --hard remotes/waldo

# local changes
git add ...
git commit ...

# pull changes on current branch
git svn rebase

# send changes to Subversion
git svn dcommit

# check for new branches
git svn fetch  

上面的工作流程适用于在单个 Subversion 分支上进行不间断的更改,您可以享受提交位的便利,但同时处理多个活动 Subversion 和 git 分支有点棘手。

要跟踪 Subversion 存储库的 waldo 分支,请从


git checkout -b waldo-svn remotes/waldo  

-svn 后缀是为了避免出现以下形式的警告


warning: refname 'waldo' is ambiguous.  

还要提醒您,这个 git 分支用于跟踪 Subversion 分支。始终保持对这些分支的更改呈线性!

要更新 waldo-svn,请运行


git svn rebase  

这将从 Subversion 获取更改并在这些更改之上重新设置任何本地更改。它还足够智能,可以识别您的本地更改何时已被上游逐字接受:它将被 Subversion 提交替换,并有一行以git-svn-id: ...在其提交消息中。

当上游维护者更改补丁的内容和结构时(e.g.、修改代码、将补丁拆分为多个 Subversion 提交,或者将多个补丁合并为一个提交)是解决冲突并试图理清混乱的过程,这就是生活的乐趣所在。

为了完全通用,请保持 git 中的 -svn 分支干净(不进行任何更改),并在 -svn 分支之外创建问题分支。要发送补丁,请使用


git diff waldo-svn waldo-fix-frobnicator  

然后当你git svn rebase为了赶上 Subversion 存储库,您需要查看日志并决定问题分支的相应配置,有点像GTD http://www.davidco.com/what_is_gtd.php对于 git。

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

与 SVN 上游同步工作[关闭] 的相关文章

  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • Git - 创建拉取请求而不分叉

    使用 git 已经有一段时间了 关于 git pull request 有很多教程和解释 其动机是什么等等 我遇到两种情况 1 分叉 git 仓库 我查看了一些公共 git 存储库并决定我想要做出贡献 所以我 通过以下方式创建重复的存储库F
  • 无法从 Sourcetree 拉取 Git 远程存储库

    我生成了 ssh 密钥并配置了我的 git 和 SourceTree 我可以 git pull 并从 Git bash 执行其他操作 注意 我在 bashrc 中添加了以下内容以使其正常工作 eval ssh agent ssh add 然
  • 在 Azure DevOps 项目之间移动存储库时保留拉取请求

    我在同一帐户内有两个 Azure DevOps 项目 我想将存储库从一个项目移动到另一个项目 这一页探索如何在具有完全保真历史记录的团队项目之间移动 git 存储库 https learn microsoft com en us azure
  • 如何将工作树与提交进行比较?

    我在用着 git diff mycommit 用于比较我的工作树mycommit 但它似乎忽略当前索引中不存在的文件 您可以按如下方式重现它 git init echo A gt A txt git add git commit m A g
  • 带有 LDAP 身份验证的 SVN 不起作用

    我首先从我的设置开始 为此我们有 2 台服务器 Server1 将用于所有源代码 文件等 在 Server2 上 我们拥有所有用户信息和登录信息 两台服务器都运行在 Centos 6 4 上 现在我们要在 server1 上设置一个 SVN
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • Git difftool 未启动外部 DiffMerge 程序

    我一直遵循 戴夫的博客条目 http www davesquared net 2009 05 setting up git difftool on windows html 链接在此answer https stackoverflow co
  • Git 在哪里存储标签?

    Git 在哪里存储标签 我执行 git tag v0 1 0 v0 10 0 v0 11 0 但目录 git refs tags是空的 Git 将这些标签存储在哪里 谢谢 它们也可以存储在 git packed refs
  • 为什么 Git 无法将文件更改与修改后的父级/主控合并?

    我有一个文件 里面只有一行 我创建一个分支并向同一文件添加第二行 保存并提交到分支 我切换回主人 并向文件中添加不同的第二行 保存并提交给master 现在总共有 3 条独特的线路 如果我现在尝试将分支合并回主分支 则会遇到合并冲突 为什么
  • 将更改从一个分支复制到另一个分支

    我有一个分支名为BranchA from master 我有一些改变BranchA 我不会合并来自BranchA to master 现在我创建了另一个分支master named BranchB 我如何复制更改BranchA to Bra
  • SVN 外部未在 TortoiseSVN 的存储库浏览器中正确显示并在本地标记为非版本化

    I work on a work project that s scattered across a myriad of source projects and SVN locations To make life easier I fol
  • 使用 gitignore 嵌套存储库。

    我想嵌套 2 个 git 存储库 我一直在阅读子模块 有一段时间我认为它很棒 我想我可能想要其他东西 这是我的情况 首先 我想我应该提到我的所有服务器都托管网站 并以 staging domain com 和 domain com 实时 模
  • git 是否有任何静态接口?

    我一直在寻找一个宁静的 git api 但似乎没有找到 我得到的最接近的是 Github 的 api 来访问一些存储库信息 还有其他的实施吗 Orion Git API http wiki eclipse org Orion Server
  • git merge 冲突的不同场景

    我试图了解 git 合并后可能发生 git 冲突的情况以及如何避免它们 我创建了一个 git 存储库并向其中添加了一个文本文件 我已将 1 添加到文本文件中并将其提交给 master 我已经从 master 创建了一个新分支 分支 2 并将
  • Phonegap使用命令行工具添加插件

    我是phonegap的新手 我按照phonegap官方网站中定义的步骤使用命令行工具创建项目 nodejs 我成功创建项目并添加平台 但是 当我尝试添加插件时出现以下错误 命令 cordova plugin add https git wi
  • Git 工作流程:分叉项目并维护本地修改副本,但保持最新

    我正在尝试找出最佳工作流程 用于维护具有自定义功能的 github 托管项目 moodle 的本地副本 同时保持保持副本最新的能力 告诉我我正在考虑做的事情是否完全疯狂 分叉项目 github com moodle moodle gt gi
  • MSysGit 与 Windows 版 Git

    我无法确定MSysGit 和 Windows 版 Git 之间的区别 http msysgit github com 它们有何不同 为什么我会选择其中之一而不是另一个 它们不是同一个东西吗 On http msysgit github co
  • 如何使用 git 比较不​​在存储库中的两个文件

    我想比较两个不在任何 git 存储库中的 css 文件 git中有这样的功能吗 git的 diff 比标准 Unix 更实用diff 我经常想这样做 并且由于这个问题在谷歌上排名很高 所以我希望这个答案出现 这个问题 如何使用git dif
  • GIT:提交时“致命:无法写入 new_index 文件”

    当我尝试将更改提交到本地存储库时 我收到以下消息 致命 无法写入 new index 文件 As this 线程说明 http luhman org blog 2010 04 05 git fatal unable write newind

随机推荐

  • regExp 用于匹配目录

    我有一个有点复杂的 NetCDF 文件目录结构 我想为其创建 THREDDS 目录 data buoy A0121 realtime A0121 met realtime nc A0121 waves realtime nc etc dat
  • 如何在本地系统中自动复制全局?

    考虑一下 我有一个全局 TEST 并且我想自动在 TEST2 中复制 拥有相同的副本 TEST 上的每个操作集或终止都应自动反映在 TEST2 上 确保这可以 100 可靠地发生的唯一方法是创建一个日志过滤器 它监视 TEST 的更改 然后
  • 如何在 SQL Server 触发器中复制插入、更新、删除的行

    如果用户更改表HelloWorlds 然后我想要 他们所做的操作 他们执行操作的时间 并将原始行的副本插入到HelloWorldsHistory 由于列长度 我希望避免单独触发插入 更新和删除操作 我试过这个 create trigger
  • Docker swarm 尝试解析我的 compose 文件中 ENV 变量的值(因为它有一个 go 模板)并给我一个错误

    错误 我尝试启动一个 logspout 容器并通过 docker compose 文件设置日志格式 ENV 变量 不太难 如果我启动它docker compose up 一切正常 但是当我尝试用 docker 启动它时swarm init
  • 让 .htaccess RewriteRule 重定向到“当前目录中”的脚本(而不是显式路径)

    我在 htaccess 中使用 RewriteRule 进行重定向anything这不是一个现有文件 到一个 cms php 文件 该文件动态处理任何请求 或输出一些错误消息 如果适用 这是我在 htaccess 中执行的操作 Rewrit
  • pyspark:系统找不到指定的路径

    我刚刚使用conda安装了pyspark 2 2 0 在windows 7 64位上使用python v3 6 java v1 8 conda install pyspark 它下载并似乎安装正确 没有错误 现在当我跑步时pyspark在命
  • 在 C 中从字符串转换为枚举

    有没有一种方便的方法来获取字符串 由用户输入 并将其转换为枚举值 在这种情况下 字符串将是枚举值的名称 如下所示 enum Day Sunday 0 Monday 1 这样 如果用户给出一天的名称 它就能够将其解析为相应的枚举值 诀窍是 我
  • 从 Excel/VBA 中的链接自动下载图片的方法是什么?

    情况是这样的 我正在尝试从外部服务器下载一些图片到我的本地计算机上 Excel 文件有一个图片链接 可以打开并下载图片 到目前为止我所尝试的是将超链接转换为文本 图片网址 并运行以下代码 我只是基本熟悉VBA 但对其他语言更熟悉 这是我到目
  • 如何在运行时以编程方式将选项卡添加到表单?

    我用谷歌搜索了这个 但仍然无法让它工作 我知道如何使用工具箱添加选项卡 我还阅读了如何以编程方式执行此操作 但我仍然不明白 MSVC Express 2010 我有一个简单的项目设置 只是一个带有 TabControl 的 Windows
  • 在Datagridview中显示子对象的属性

    如何在 datagridview 中显示对象的选定属性以及第一个对象的成员对象的选定属性 我认为我不会要求绑定 而是依赖硬编码更新 因为更新将在非 UI 线程上启动 而且我认为绑定不会那么容易 至少我在其他项目中遇到过问题 基本上我想了解有
  • 如何执行下一个按钮操作?

    我在显示下一个问题时在 下一步 按钮中遇到问题 在我第一次设置文本时 我得到了正确的问题并匹配了四个选项答案 我需要的是 我有一个 下一步 按钮 用于显示下一个问题和答案 当我单击 下一步 按钮时 我可以获得下一个问题的接下来的四个选项 但
  • 如何在 C# 中绘制面板?

    嘿 我需要在 C 中的面板上进行绘图 但没有将绘图代码放在 panel1 Paint 中 我该怎么做 顺便说一句 我正在使用 WinForms Update 我忘了说清楚 我不需要将绘图代码放在绘图处理程序中 因为我需要根据按钮的事件开始绘
  • 打印一个字符*

    我提前为这个愚蠢的问题道歉 这是我的结构定义 struct vcard char cnet char email char fname char lname char tel 我正在尝试使用函数 vcard show vcard c 打印此
  • 使用 gridSVG 和 ggplot2 v.0.9.0 进行交互式点标签

    我想以交互方式在 ggplot 中标记点 以便将鼠标悬停在点上会显示标签 我正在尝试调整给出的答案这个问题 https stackoverflow com questions 8972642 how do you relate ggplot
  • 贝叶斯评级

    avg num votes 18 Average number of votes in all products avg rating 3 7 Average rating for all products this num votes 6
  • 如何在 Highcharts 组织结构图中启用拖放功能?

    我需要设置一个 组织 类型的 Highcharts 图表 它应该支持相互拖放节点 以移动树内的节点 目前 我得到了一个 组织 图表 其中显示了所有需要的信息 我尝试使用Highcharts plotOptions series dragDr
  • 使用文件夹结构迭代 S3 存储桶中的文件

    我有一个 S3 存储桶 在存储桶内 我们有一个 2018 年的文件夹 以及我们每个月和每天收集的一些文件 例如 2018 3 24 2018 3 25 等等 我们没有将日期放入每天存储桶内的文件中 基本上 我想遍历存储桶并使用文件夹结构按
  • 张量流中值

    如何计算张量流中列表的中值 喜欢 node tf median X X 是占位符在numpy中 我可以直接使用np median来获取中值 如何在tensorflow中使用numpy运算 用于计算数组的中位数tensorflow你可以使用p
  • Angular.js - 使用间隔应用过滤器

    我正在对日期时间对象使用自定义 angular js 过滤器 function relativeTimeFilter return function dateObj return getRelativeDateTimeString date
  • 与 SVN 上游同步工作[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在开发一个使用开源项目代码的项目 要求之一是将尽可能多的代码推回到上游 远程项目正在使用 Subversion 不是很好 我当前的