作者oranfrog (oranfrog)
看板Soft_Job
标题[请益] merge程式码的问题
时间Sun Aug 6 13:43:14 2017
各位大大好,小弟是程式开发的新手,工作上遇到技术上的问题想上来向大家求救
最近我接手了一份已经开发一段时间的程式
而接到一个任务是:要把某个新功能merge在旧的版本上
例如(数字我随便举例,只是想表达程式新旧):
程式最新的commit为 2110
而某个「新功能」是在 2102->2103 装上去的
我被交办的任务是把这个「新功能」装在 1133 (大概两年前的commit) 上
程式并不算大,但是模组化做得不彻底
常常一个 function 乱七八糟夹杂了一堆东西
而且两版程式码相差了两年,内容已有许多不同,小弟非常头大
主管又觉得这个是复制贴上的工,应该马上就要好
想请问版上的前辈们有没有相关经验分享或建议
或者推个关键字让小弟去查
先谢谢大家了>"<
注1:程式语言为 C
注2:因为政策与时间因素,重构较不可行
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.227.8.199
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1501998197.A.1E2.html
※ 编辑: oranfrog (125.227.8.199), 08/06/2017 13:44:54
1F:推 abccbaandy: 104 08/06 13:55
2F:推 mathrew: 那就只好给他 CTRL+C CTRL+V 罗 08/06 14:00
3F:推 CGS0: 就练习 看看少了什麽补进去 08/06 14:02
4F:推 TSW: 找出 feature branch 整个 rebase 过去然後解 conflit 然後让 08/06 14:35
5F:→ TSW: 让测试飞~ 飞不过就回报主管不可能马上就好~ 08/06 14:35
6F:推 max241: 确定工作区乾净後 reset hard到1133 08/06 14:36
7F:→ max241: cherry-pick 2103的变更 08/06 14:36
8F:推 usan: 边搬边抓error,只能这样,系统厂常这样搞 08/06 15:46
9F:推 abc0922001: SVN还是Git? 08/06 16:01
10F:→ testPtt: 只能把新功能要的条件一个个补上罗 08/06 16:01
11F:→ FrAnKw: 这什麽主管?主管没看过程式码还是没写过程式... 08/06 16:06
12F:→ FrAnKw: 都只要复制贴上就可以搞定谁还要去研究design pattern? 08/06 16:10
13F:推 kurtsgm: 说真的...版本差这麽多 架构又不是很好的话...就算用版本 08/06 16:18
14F:→ kurtsgm: 控制的机制去「搬」....能动的机率大概也很低 XD 08/06 16:18
15F:→ testPtt: 不然就装死 我以为主管要自己补条件 08/06 16:19
16F:推 jj0321: 地基已经烂掉了 不打掉重练是要继续盖违楼? 08/06 16:27
17F:推 xxtuoo: 主管熟你不熟 就这个差异.diff 2012~2013差异 慢慢补啊XDD 08/06 16:29
感谢大家的回覆
版控是用SVN,但就如k大所言,用控制的机制去搬的话,应该会动不了
目前打算边搬边抓error,把条件一个一个补上
主管不会写程式(我们非软体业),但还算能沟通
现在是想说自己一边改一边去跟他凹时间XD
(比较怕的是凹多了他会觉得我想偷懒...)
※ 编辑: oranfrog (125.227.8.201), 08/06/2017 17:00:35
※ 编辑: oranfrog (125.227.8.201), 08/06/2017 17:01:16
18F:→ MOONY135: 两年阿...我两个月前跟现在的就差很多了 08/06 17:25
19F:推 mdkn35: 两年前囧 08/06 17:35
20F:→ longlongint: 先高速复制贴上先交给他 证明这个不是复制贴上可解 08/06 18:13
21F:→ longlongint: 然後找主管信任的人帮你解释 08/06 18:14
22F:→ longlongint: 然後最懂新功能的人先问他意见 08/06 18:15
23F:推 hidog: git的话,搜寻cherry-pick 08/06 18:29
24F:推 vi000246: 两年前的与其用Git还不如手动贴 08/06 19:57
25F:推 kingofsdtw: 2年小Case啦,10年我都在搬惹 08/06 20:37
26F:推 AIdrifter: 你搞错重点 08/06 21:38
27F:→ AIdrifter: 你需要的是 可以三方比对版本的软体 08/06 21:38
28F:→ AIdrifter: 请search araxis merge 类似软体 08/06 21:38
29F:→ AIdrifter: 我前公司主管也是不懂 08/06 21:38
30F:→ AIdrifter: 不知谁把diff印出来整整超过百页a4 08/06 21:38
31F:→ AIdrifter: 明明用这类软体一下就解决了… 08/06 21:38
32F:→ xam: 外行的主管+程式开发的新手.. 这也是软体的 anti-pattern 啊 08/06 22:35
33F:推 KKFN: 试试看winMerge手动Merge 08/06 23:30
34F:推 doranako: 差了两年的code自动merge应该出错更多,而且没抓到隐藏 08/07 08:38
35F:→ doranako: 风险更大,你只能看history,把新功能的新增code抓出来 08/07 08:38
36F:→ doranako: ,手动merge比较安全 08/07 08:38
37F:推 v7q4: 就照他讲的ctrl+c ctrl+v 然後改到可以动就好了 08/07 10:43
38F:→ v7q4: 千万记得要有email备份! 以免被婊 08/07 10:43
39F:→ v7q4: 假装寄封信去问他是不是要这样做 让他回答是 08/07 10:44
40F:推 kurakidream: pick过去 可能要解一堆conflict 08/07 15:02
41F:→ KanoLoa: Merge只是复制贴上? XD 08/07 15:14
42F:推 CrystalNik: 把这篇贴给你主管看XD 有很多人帮你背书这很困难 08/07 17:27
43F:→ jennya: 直接把旧版本从「1133」变成指向2103,这样符合主管要求吗 08/07 18:11
44F:→ jennya: 还是主管要求的是:旧版本必须是「……、1132、1133、2103 08/07 18:12
45F:→ jennya: 」 08/07 18:12
46F:推 jennya: 如果是前者就很好解决,直接把旧版更新到2103的意思。如果 08/07 18:20
47F:→ jennya: 每个commit都有做好,2103那版本应该也要能动。 08/07 18:20
48F:→ jennya: 如果是後者,就很麻烦,一定不可能2103单独那个commit就能 08/07 18:20
49F:→ jennya: 动,一定是要再补足1133~2103之间对2103而言必要的架构。 08/07 18:20
50F:→ jennya: 如果只是小功能,说不定参考2103然後自己重写加到1133上还 08/07 18:20
51F:→ jennya: 比较快。 08/07 18:20
52F:推 besmartAE: 主管都嘛觉得什麽都简单。可以列出困难点给他 08/08 08:31
53F:→ NCUking: 不懂软体的主管 大灾难的起手式 08/08 12:38
54F:推 cerwvk: 认同楼上+1 08/08 14:55
55F:→ chrisjohn214: 先看版本数量,接着一个个export出来用araxix merge 08/08 18:21
56F:→ chrisjohn214: 比对,不要用svn内建的差异,你会累死 08/08 18:21
57F:推 vn509942: 之後肯定会有大惊喜 08/09 08:23