Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >有可能拥有3层Git-SVN环境吗?

有可能拥有3层Git-SVN环境吗?
EN

Stack Overflow用户
提问于 2011-12-16 10:24:03
回答 2查看 239关注 0票数 1

我是Git新手(来自SVN)。我想知道是否有可能建立一个3层的软件开发环境。我说的第三层是这样的:

代码语言:javascript
运行
AI代码解释
复制
                 SVN
         (as top remote repo)
                  |
                GIT 1
     (as middle tier remote repo)
        /                    \
      GIT 2                  GIT 3
(local git repo)       (local git repo)

目前,我没有使用中间层(Git1)远程存储库。因此,只有本地Git存储库才会将更改推送到远程SVN存储库。

由于顶层SVN repo并不总是对我可用(由于连接问题),我想知道是否可以在中间层(Git1)放置一个中间层Git repo,所有客户端(Git2和Git3)都会推送更改,比方说,在一天结束时,Git1的更改将推送到SVN。

所以问题是:这种设置可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-16 10:28:48

当您推送回svn时,作者身份将会丢失(如果您有多个提交者,这一点很重要),因为git-svn使用一个用户来推送更改。但更糟糕的是,推送到svn的提交将被修改(将添加svn版本),这将使未来的工作变得痛苦,即使不是完全不可能。

票数 2
EN

Stack Overflow用户

发布于 2012-05-02 12:09:23

我同意Michal的观点,即3层解决方案可以巧妙地解决在存在到强制SVN顶层的糟糕网络连接的情况下处理分布式git副本的问题。

我自己也有这个问题。

我也同意Michael的观点,如果你试图以一种不守纪律的方式来做这件事,事情可能很快就会变得一团糟。

我还没有实现这个解决方案,但是我大概知道一个解决方案是什么样子的。

基本的想法是让git1维护一个以一种非常受控的方式更新的挂起分支。Git2和Git3中的开发人员会将他们的工作建立在未决的基础上(或者更好的是,在定义良好的时间点上获取未决的标签)

让我们:

SVN干线是跟踪

  1. 干线的分支-它可能在N commits
  2. pending之后是用于跟踪尚未提交到的更改的分支,例如:

代码语言:javascript
运行
AI代码解释
复制
- pending always refers to a merge commit
- git rev-list --merges ^trunk pending^1 is empty # (no pending merge commits)
- pending and pending^1 are always sametree

  1. 增量是这样的提交: git rev-

--merges^待处理增量是空的,

  1. 未来是一个依赖于增量的提交,这样git rev-
  2. --merges^增量未来是空的

然后,将增量集成到挂起中:

代码语言:javascript
运行
AI代码解释
复制
git checkout -f -B tmp delta
git rebase --onto pending^1 pending tmp
git checkout pending
git merge --ff-only tmp
git merge -s ours delta
git branch -D tmp

要将未来集成到待定中:

代码语言:javascript
运行
AI代码解释
复制
git checkout -f -b tmp future
git rebase --onto pending^1 pending tmp
git checkout pending
git merge --ff-only tmp
git merge -s ours future
git branch -D tmp

要将挂起集成到SVN中:

与SVN同步中继:

代码语言:javascript
运行
AI代码解释
复制
git checkout trunk
git svn rebase             # should never fail

*此处为检查点中继

将挂起的^1重新设定为主干

代码语言:javascript
运行
AI代码解释
复制
git checkout -f -B tmp pending^1
git rebase --onto trunk trunk tmp
git checkout trunk
git merge --ff-only tmp
git svn dcommit            # could fail with a race condition 
                           # rollback to *** if this happens

将合并记录在pending中

代码语言:javascript
运行
AI代码解释
复制
git checkout -f -B tmp trunk
git merge -s ours pending
git checkout pending
git merge --ff-only tmp
git branch -D tmp
git tag INTEGRATED-XXX pending # Every commit reachable from INTEGRATED-XXX 
                               # has been integrated with SVN

此解决方案在挂起的分支上使用仅信息(-s ours)合并提交,以记录源自git-land的提交已被合并到预定要交付到svn-land的分支中的事实。

因此,即使为了将提交提交到SVN而发生了rebase,这对于git-land中基于这样的提交的任何人来说都不应该是问题,因为git rev-list^pending应该只显示未集成的提交,并且集成周期的后续迭代只会重新设置这些提交的基础。

诚然,我只是举例说明了快乐世界的情况。我也没有说明增量不是与待决的简单线性偏差的情况。

如果挂起中有很多未交付的工作,并且在SVN上的rebase失败并且无法修复,那么事情可能会变得非常麻烦。只要你能解决这个问题,而不是中止rebase,你就很好。如果你不得不放弃重置基地,重建将会是混乱的。

我确实计划为这个策略实现一些脚本支持,并将在这里发布更新,让你知道它是如何进行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8532795

复制
相关文章
为什么ConcurrentHashMap不允许插入null值?
在 Java 语言中,ConcurrentHashMap 和 Hashtable 这些线程安全的集合是不允许 key 或 value 插入 null 值的,而 HashMap 又允许 key 或 value 插入 null 值,这到底是为什么呢?
磊哥
2022/05/09
1.9K0
为什么ConcurrentHashMap不允许插入null值?
为什么ConcurrentHashMap不允许插入null值?
在Java语言中,给ConcurrentHashMap和Hashtable这些线程安全的集合中的Key或者Value插入 null(空) 值的会报空指针异常,但是单线程操作的HashMap又允许 Key 或者 Value 插入 null(空) 值。这到底是为什么呢?
Tom弹架构
2022/08/22
2.1K0
为什么ConcurrentHashMap不允许插入null值?
SystemVerilog(五)-文本值
System Verilog 扩展了 Verilog 的 教据类型 , 增强了指定文本值的方法。在介绍文本值之前我们先简单回忆一下HDL中的四个状态数据值。
碎碎思
2022/04/14
1.2K0
SystemVerilog(五)-文本值
1.1、文本插值
Vue 使用一种基于 HTML 的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue 模板都是语法层面合法的 HTML,可以被符合规范的浏览器和 HTML 解析器解析。
张果
2022/11/12
8.9K0
1.1、文本插值
文本txt实现bat锁机代码(整蛊可用)
1、Net User 作用:添加或更改用户帐号或显示用户帐号信息。 命令格式:Net user [username [password | *] [options]] [/domain] 有关参数说明: ·键入不带参数的Net user查看计算机上的用户帐号列表 ·username添加、删除、更改或查看用户帐号名 ·password为用户帐号分配或更改密码 ·提示输入密码 2、Net Localgroup 作 用:添加、显示或更改本地组。 命令格式:Net localgroup groupname {/add [/comment:"text "] | /delete} [/domain] 有关参数说明:
HACK学习
2019/08/06
5.6K3
文本txt实现bat锁机代码(整蛊可用)
jQuery 文本属性值
​ jQuery的文本属性值常见操作有三种:html() / text() / val() ; 分别对应JS中的 innerHTML 、innerText 和 value 属性。
梨涡浅笑
2022/05/08
3.1K0
jQuery 文本属性值
jQuery的文本属性值常见操作有三种:html() / text() / val() ; 分别对应JS中的 innerHTML 、innerText 和 value 属性。
清出于兰
2020/10/26
1.8K0
jQuery 文本属性值
jQuery的文本属性值常见操作有三种:html() / text() / val() ; 分别对应JS中的 innerHTML 、innerText 和 value 属性。
星辰_大海
2020/10/09
2.6K0
jQuery 文本属性值
MyBatis通用mapper插入,更新null值问题
MyBatis通用mapper插入,更新null值问题 Mybatis通用Mapper updateByPrimarykey()和insert()方法报错,提示jdbctype错误。 Exception in thread “main” org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #6 with JdbcType OTHER . Try setting a different Jdb
用户1212940
2022/04/13
1.3K0
python在mysql中插入null空值
python在mysql中插入null空值 sql = “INSERT INTO MROdata (MmeUeS1apId) VALUES (%s)”%‘NULL’ %s没有引号,可以将“null”中null写进数据库,达到NULL值效果。
kirin
2020/12/03
8.4K0
将map按照值排序
值里面存放的是一个对象需要根据id排序 将相同的人放在一起 List<Map.Entry<String, CorrectRate>> list = new LinkedList<Map.Entry<String, CorrectRate>>(correctRateOm.entrySet()); Collections.sort(list, new Comparator<Map.Entry<String, CorrectRate>>() {
崔笑颜
2020/06/08
9360
将数组中空值字段赋默认值!
在上面代码中,首先判断传入的对象是否为数组,如果是数组则对其进行map()操作,否则将其转换成键值对数组并调用 Object.fromEntries() 方法生成一个新的对象。
执行上下文
2023/07/24
2970
将数组中空值字段赋默认值!
mysql将大数据插入表中方法
1 数据量不是很大,有几千行数据.先用notepad对数据进行编辑,结果如下 insert into `web4399_vote`.`frxz2_hlwjhj_code` (active_code) values('s001asdf87mo'), ('s001sfsdfy5e'), ('dfsdfc3euv'), ('s0sdfsd6k4j6z'), ('s00dfsdfk59'), (asdfnth'), ('s00asdf246l'), ('s001sdfsdf1h'); 然后,
闵开慧
2018/03/30
1.7K0
还分不清左值,右值,将亡值?看这里!
来源:https://www.cnblogs.com/zpcdbky/p/5275959.html
编程珠玑
2019/11/24
6.2K0
Excel: 数据取整函数(向上取整,向下取整)
文章背景:在进行数据处理时,有时需要对数据进行取整,以满足数据分析的要求。下面对Excel自带的一些取整函数进行介绍。
Exploring
2022/09/20
4.4K0
Excel: 数据取整函数(向上取整,向下取整)
为什么HashMap的key允许空值,而HashTable却不允许
HashMap在put的时候会调用hash()方法来计算key的hashcode值,可以从hash算法中看出当key==null时返回的值为0。因此key为null时,hash算法返回值为0,不会调用key的hashcode方法。
凌云Cloud
2020/10/30
1.8K0
为什么HashMap的key允许空值,而HashTable却不允许
Mybatis插入时返回自增id的值
1.先取出最大id值,在程序中加1 2.调用数据库api取得最大id值,然后插入 ...
4xx.me
2022/06/09
1.9K0
Mybatis插入时返回自增id的值
数据分析EPHS(6)-使用Spark计算数列统计值
前两篇中咱们分别介绍了使用Excel、Python和Hive SQL计算统计值,这次咱们使用Spark SQL来计算统计值。
石晓文
2019/07/30
1.4K0
用MapReduce分析Hbase将结果插入mysql中
从HBASE读取清洗过的数据,写入到mysql的表中 NewInstallUserRunner.java 计算新增用户入口类 NewInstallUserRunner的所有属性方法 main方法:
Albert陈凯
2018/04/04
1.6K0
用MapReduce分析Hbase将结果插入mysql中
点击加载更多

相似问题

输入文本框不允许我插入值

112

无法将值NULL插入列‘;列不允许空值。插入失败。()

14

无法将值NULL插入'CompanyId‘列不允许空值。插入失败

30

如何将插入位置所在的整串插入到RichTextBox中?

21

无法将值NULL插入'DeletedDatabaseRecord‘列,.;列不允许空值。插入失败

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档