[請益] merge程式碼的問題

作者: oranfrog (oranfrog)   2017-08-06 13:43:14
各位大大好,小弟是程式開發的新手,工作上遇到技術上的問題想上來向大家求救
最近我接手了一份已經開發一段時間的程式
而接到一個任務是:要把某個新功能merge在舊的版本上
例如(數字我隨便舉例,只是想表達程式新舊):
程式最新的commit為 2110
而某個「新功能」是在 2102->2103 裝上去的
我被交辦的任務是把這個「新功能」裝在 1133 (大概兩年前的commit) 上
程式並不算大,但是模組化做得不徹底
常常一個 function 亂七八糟夾雜了一堆東西
而且兩版程式碼相差了兩年,內容已有許多不同,小弟非常頭大
主管又覺得這個是複製貼上的工,應該馬上就要好
想請問版上的前輩們有沒有相關經驗分享或建議
或者推個關鍵字讓小弟去查
先謝謝大家了>"<
註1:程式語言為 C
註2:因為政策與時間因素,重構較不可行
作者: abccbaandy (敏)   2017-08-06 13:55:00
104
作者: mathrew (Joey)   2017-08-06 14:00:00
那就只好給他 CTRL+C CTRL+V 囉
作者: CGS0 (Mike Chen)   2017-08-06 14:02:00
就練習 看看少了什麼補進去
作者: TSW (翹班帝國)   2017-08-06 14:35:00
找出 feature branch 整個 rebase 過去然後解 conflit 然後讓讓測試飛~ 飛不過就回報主管不可能馬上就好~
作者: max241 (養生之道)   2017-08-06 14:36:00
確定工作區乾淨後 reset hard到1133cherry-pick 2103的變更
作者: usan (usan)   2017-08-06 15:46:00
邊搬邊抓error,只能這樣,系統廠常這樣搞
作者: abc0922001 (中士abc)   2017-08-06 16:01:00
SVN還是Git?
作者: testPtt (測試)   2017-08-06 16:01:00
只能把新功能要的條件一個個補上囉
作者: FrAnKw (hard to believe)   2017-08-06 16:06:00
這什麼主管?主管沒看過程式碼還是沒寫過程式...都只要複製貼上就可以搞定誰還要去研究design pattern?
作者: kurtsgm   2017-08-06 16:18:00
說真的...版本差這麼多 架構又不是很好的話...就算用版本控制的機制去「搬」....能動的機率大概也很低 XD
作者: testPtt (測試)   2017-08-06 16:19:00
不然就裝死 我以為主管要自己補條件
作者: jj0321 (JJ與你倒數唷)   2017-08-06 16:27:00
地基已經爛掉了 不打掉重練是要繼續蓋違樓?
作者: xxtuoo (浪費時間不好QQ)   2017-08-06 16:29:00
主管熟你不熟 就這個差異.diff 2012~2013差異 慢慢補啊XDD
作者: MOONY135 (談無慾)   2017-08-06 17:25:00
兩年阿...我兩個月前跟現在的就差很多了
作者: mdkn35 (53nkdm)   2017-08-06 17:35:00
兩年前囧
作者: longlongint (華哥爾)   2017-08-06 18:13:00
先高速複製貼上先交給他 證明這個不是複製貼上可解然後找主管信任的人幫你解釋然後最懂新功能的人先問他意見
作者: hidog (.....)   2017-08-06 18:29:00
git的話,搜尋cherry-pick
作者: vi000246 (Vi)   2017-08-06 19:57:00
兩年前的與其用Git還不如手動貼
作者: kingofsdtw (不能閒下來!!)   2017-08-06 20:37:00
2年小Case啦,10年我都在搬惹
作者: AIdrifter (交錯地帶)   2017-08-06 21:38:00
你搞錯重點你需要的是 可以三方比對版本的軟體請search araxis merge 類似軟體我前公司主管也是不懂不知誰把diff印出來整整超過百頁a4明明用這類軟體一下就解決了…
作者: xam (聽說)   2017-08-06 22:35:00
外行的主管+程式開發的新手.. 這也是軟體的 anti-pattern 啊
作者: KKFN (John)   2017-08-06 23:30:00
試試看winMerge手動Merge
作者: doranako (真愛無限)   2017-08-07 08:38:00
差了兩年的code自動merge應該出錯更多,而且沒抓到隱藏風險更大,你只能看history,把新功能的新增code抓出來,手動merge比較安全
作者: v7q4 ((.)(.)乳劍雙修 -|=>)   2017-08-07 10:43:00
就照他講的ctrl+c ctrl+v 然後改到可以動就好了千萬記得要有email備份! 以免被婊假裝寄封信去問他是不是要這樣做 讓他回答是
作者: kurakidream (隨波逐流)   2017-08-07 15:02:00
pick過去 可能要解一堆conflict
作者: KanoLoa (卡)   2017-08-07 15:14:00
Merge只是複製貼上? XD
作者: CrystalNik (水晶尼克)   2017-08-07 17:27:00
把這篇貼給你主管看XD 有很多人幫你背書這很困難
作者: jennya (Jennya)   2017-08-07 18:11:00
直接把舊版本從「1133」變成指向2103,這樣符合主管要求嗎還是主管要求的是:舊版本必須是「……、1132、1133、2103」如果是前者就很好解決,直接把舊版更新到2103的意思。如果每個commit都有做好,2103那版本應該也要能動。如果是後者,就很麻煩,一定不可能2103單獨那個commit就能動,一定是要再補足1133~2103之間對2103而言必要的架構。如果只是小功能,說不定參考2103然後自己重寫加到1133上還比較快。
作者: besmartAE (*無敵海灘男孩*)   2017-08-08 08:31:00
主管都嘛覺得什麼都簡單。可以列出困難點給他
作者: NCUking (中大王)   2017-08-08 12:38:00
不懂軟體的主管 大災難的起手式
作者: cerwvk (乎你~~~)   2017-08-08 14:55:00
認同樓上+1
作者: chrisjohn214 (咪咪獎)   2017-08-08 18:21:00
先看版本數量,接著一個個export出來用araxix merge比對,不要用svn內建的差異,你會累死
作者: vn509942 (如履薄冰)   2017-08-09 08:23:00
之後肯定會有大驚喜

Links booklink

Contact Us: admin [ a t ] ucptt.com