如何保持自己的应用和关联的第三方框架同步更新?

在当今web开发中,有越来越多,越来越成熟的开源应用框架来支持我们快速开发web应用。但是有很多情况下这些应用框架本身也在不断地新增重要功能,解决部分bug,

那么我们如何能够在保持自己工作向前走的情况下,又能择机将我们的应用框架本身做无缝升级?git的工程实践有什么可以应用的呢?本文希望能够有所探讨。

我做了以下实验,暂时看是可行的:

1. 首先假设第三方库为l.git;

2. 一般首先clone l.git, 做基本的配置后生成我们的应用app.git 注意:l.git和app.git一般都是裸库;

3.john(码农) clone一个app.git,形成自己的开发库,比如叫做dev;

4.john持续递交代码在dev上,并且最终push到app.git中央库中;

5.假设l.git的开发人员不断迭代他们的框架代码,到现在l.git和app.git中的基础框架代码已经开始分叉了,现在我们希望做一下框架本身的更新;

6.项目经理tom clone一个app.git ,我们叫做sync, 注意这时sync库已经包含了最新的应用代码和比较老的框架代码;

7.tom 创建一个upstream remote: git remote add upsteam l.git;

8.tom 拉取最新的库代码: git fetch upstream master

9.tom 执行rebase命令: git checkout master;git rebase upstream/master;到这里我们的master分支就已经是在最新的框架代码之上了,但是问题来了:这时master分支和app.git的master有了分叉,这时git push origin master的话,git会拒绝并且提示我们git pull,我们到底怎么半呢?

9.1要么再次git pull(隐含会rebase),要么直接merge,但是这两个工作好像都会把以前在第9步中冲突解决的痛苦过程再演一遍,我感觉不是好办法;

9.2直接git push -f origin master,貌似这个办法简单粗暴有用,但是我的问题是:由于历史被覆盖,如果这个master分支上还有其他的分支,是否会产生问题呢?有待继续验证更新。

时间: 2024-08-29 17:40:04

如何保持自己的应用和关联的第三方框架同步更新?的相关文章

利用带关联子查询Update语句更新数据

Update是T-sql中再简单不过的语句了,update table set column=expression  [where condition],我们都会用到.但update的用法不仅于此,真正在开发的时候,灵活恰当地使用update可以达到事半功倍的效果. 假定有表Table1(a,b,c)和Table2(a,c),现在Table1中有些记录字段c为null,要根据字段a在Table2中查找,取出字段a相等的字段c的值来更新Table1.一种常规的思路,通过游标遍历Table1中字段c

SQL关联操作(查询与更新)

    sql的除了关联查询,还可以关联更新删除等,有时可以一条sql搞定数据移植, 避免写存储过程时. 以下列举了sql的各种级联操作场景.        主表:部门表-dept(dept_id,dname,enum)       从表:员工表-emp (emp_id , ename , sal,dept_id)       //以下是oracle的sql语法  1,关联查询     场景:查询所有员工的部门名称                     2,关联更新     场景:更新部门表的

hibernate(四)一对多单向、多对一双向、自身双向关联

?经过前几篇文章的简略总结,主要认识了关于hibernate的基本认识,顺便认识了hibernate的简单的一个原理.具体参见 Hibernate (一)hibernate入门 Hibernate(二)hibernate原理简单实现对比JDBC hibernate(三)入门级--hibernate实例 从这篇文章开始就接触具体hibernate是如何来配置使用,更多的是一些细节的掌握.首先需要声明的是作者也是在诸多资料和工作学习中不断在更新自己关于知识的理解,难免出现一些在现阶段的主观认识和片面

关系关联

下面就针对这个问题分为三个方面 1)一对多双向关联 2)多对一单向关联 3)一对多双向自身关联 1)一对多双向关联 需要注意的是通常情况下,一对多双向关联和多对一双向关联都是同一个意思.因为就从你那个角度来看待这个问题了,这个应该是么有问题滴. 实体配置 private Set<Score> scores=new HashSet<Score>(); public void set setScores(Score scores){ this.scores=scores; } publ

数据库的高级操作

高级操作 复制表结构 语法: ????create table 表B like 表A; 示例: 复制表中的数据 语法: ????create table 表B select *或字段列表 from 表A; 蠕虫复制 语法: ????insert into 表名[(字段列表)] select *或字段列表 from 表名; 修改操作 ????限制修改指定的行数. 语法: ????update 表名 set 字段=值... [where子句] limit n; 说明: ????在执行update语句

关联关系

下面就针对这个问题分为三个方面 1)一对多双向关联 2)多对一单向关联 3)一对多双向自身关联 1)一对多双向关联 需要注意的是通常情况下,一对多双向关联和多对一双向关联都是同一个意思.因为就从你那个角度来看待这个问题了,这个应该是么有问题滴. 实体配置 private Set<Score> scores=new HashSet<Score>(); public void set setScores(Score scores){ this.scores=scores; } publ

基于BindingSource的WinForm开发

BindingSource控件介绍 BindingSource控件介绍 BindingSource控件是.NET Framework 2.0提供的新控件之一.BindingSource控件与数据源建立连接,然后将窗体中的控件与BindingSource控件建立绑定关系来实现数据绑定,简化数据绑定的过程. BindingSource控件即是一个连接后台数据库的渠道,同时又是一个数据源,因为BindingSource控件即 支持向后台数据库发送命令来检索数据,又支持直接通过BindingSource

关联关系介绍

下面就针对这个问题分为三个方面 1)一对多双向关联 2)多对一单向关联 3)一对多双向自身关联 1)一对多双向关联 需要注意的是通常情况下,一对多双向关联和多对一双向关联都是同一个意思.因为就从你那个角度来看待这个问题了,这个应该是么有问题滴. 实体配置 private Set<Score> scores=new HashSet<Score>(); public void set setScores(Score scores){ this.scores=scores; } publ

转载 C# BindingSource

1.引言 BindingSource组件是数据源和控件间的一座桥,同时提供了大量的API和Event供我们使用.使用这些API我们可以将Code与各种具体类型数据源进行解耦:使用这些Event我们可以洞察数据的变化.2.简单绑定 DataTable myTable = myTableAdapter.GetData();//创建Table BindingSource myBindingSource= new BindingSource();//创建BindingSource DataGridVie