[請益] merge程式碼的問題

看板Soft_Job作者 (oranfrog)時間8年前 (2017/08/06 13:43), 8年前編輯推噓24(24033)
留言57則, 32人參與, 最新討論串1/1
各位大大好,小弟是程式開發的新手,工作上遇到技術上的問題想上來向大家求救 最近我接手了一份已經開發一段時間的程式 而接到一個任務是:要把某個新功能merge在舊的版本上 例如(數字我隨便舉例,只是想表達程式新舊): 程式最新的commit為 2110 而某個「新功能」是在 2102->2103 裝上去的 我被交辦的任務是把這個「新功能」裝在 1133 (大概兩年前的commit) 上 程式並不算大,但是模組化做得不徹底 常常一個 function 亂七八糟夾雜了一堆東西 而且兩版程式碼相差了兩年,內容已有許多不同,小弟非常頭大 主管又覺得這個是複製貼上的工,應該馬上就要好 想請問版上的前輩們有沒有相關經驗分享或建議 或者推個關鍵字讓小弟去查 先謝謝大家了>"< 註1:程式語言為 C 註2:因為政策與時間因素,重構較不可行 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.8.199 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1501998197.A.1E2.html ※ 編輯: oranfrog (125.227.8.199), 08/06/2017 13:44:54

08/06 13:55, , 1F
104
08/06 13:55, 1F

08/06 14:00, , 2F
那就只好給他 CTRL+C CTRL+V 囉
08/06 14:00, 2F

08/06 14:02, , 3F
就練習 看看少了什麼補進去
08/06 14:02, 3F

08/06 14:35, , 4F
找出 feature branch 整個 rebase 過去然後解 conflit 然後讓
08/06 14:35, 4F

08/06 14:35, , 5F
讓測試飛~ 飛不過就回報主管不可能馬上就好~
08/06 14:35, 5F

08/06 14:36, , 6F
確定工作區乾淨後 reset hard到1133
08/06 14:36, 6F

08/06 14:36, , 7F
cherry-pick 2103的變更
08/06 14:36, 7F

08/06 15:46, , 8F
邊搬邊抓error,只能這樣,系統廠常這樣搞
08/06 15:46, 8F

08/06 16:01, , 9F
SVN還是Git?
08/06 16:01, 9F

08/06 16:01, , 10F
只能把新功能要的條件一個個補上囉
08/06 16:01, 10F

08/06 16:06, , 11F
這什麼主管?主管沒看過程式碼還是沒寫過程式...
08/06 16:06, 11F

08/06 16:10, , 12F
都只要複製貼上就可以搞定誰還要去研究design pattern?
08/06 16:10, 12F

08/06 16:18, , 13F
說真的...版本差這麼多 架構又不是很好的話...就算用版本
08/06 16:18, 13F

08/06 16:18, , 14F
控制的機制去「搬」....能動的機率大概也很低 XD
08/06 16:18, 14F

08/06 16:19, , 15F
不然就裝死 我以為主管要自己補條件
08/06 16:19, 15F

08/06 16:27, , 16F
地基已經爛掉了 不打掉重練是要繼續蓋違樓?
08/06 16:27, 16F

08/06 16:29, , 17F
主管熟你不熟 就這個差異.diff 2012~2013差異 慢慢補啊XDD
08/06 16:29, 17F
感謝大家的回覆 版控是用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

08/06 17:25, , 18F
兩年阿...我兩個月前跟現在的就差很多了
08/06 17:25, 18F

08/06 17:35, , 19F
兩年前囧
08/06 17:35, 19F

08/06 18:13, , 20F
先高速複製貼上先交給他 證明這個不是複製貼上可解
08/06 18:13, 20F

08/06 18:14, , 21F
然後找主管信任的人幫你解釋
08/06 18:14, 21F

08/06 18:15, , 22F
然後最懂新功能的人先問他意見
08/06 18:15, 22F

08/06 18:29, , 23F
git的話,搜尋cherry-pick
08/06 18:29, 23F

08/06 19:57, , 24F
兩年前的與其用Git還不如手動貼
08/06 19:57, 24F

08/06 20:37, , 25F
2年小Case啦,10年我都在搬惹
08/06 20:37, 25F

08/06 21:38, , 26F
你搞錯重點
08/06 21:38, 26F

08/06 21:38, , 27F
你需要的是 可以三方比對版本的軟體
08/06 21:38, 27F

08/06 21:38, , 28F
請search araxis merge 類似軟體
08/06 21:38, 28F

08/06 21:38, , 29F
我前公司主管也是不懂
08/06 21:38, 29F

08/06 21:38, , 30F
不知誰把diff印出來整整超過百頁a4
08/06 21:38, 30F

08/06 21:38, , 31F
明明用這類軟體一下就解決了…
08/06 21:38, 31F

08/06 22:35, , 32F
外行的主管+程式開發的新手.. 這也是軟體的 anti-pattern 啊
08/06 22:35, 32F

08/06 23:30, , 33F
試試看winMerge手動Merge
08/06 23:30, 33F

08/07 08:38, , 34F
差了兩年的code自動merge應該出錯更多,而且沒抓到隱藏
08/07 08:38, 34F

08/07 08:38, , 35F
風險更大,你只能看history,把新功能的新增code抓出來
08/07 08:38, 35F

08/07 08:38, , 36F
,手動merge比較安全
08/07 08:38, 36F

08/07 10:43, , 37F
就照他講的ctrl+c ctrl+v 然後改到可以動就好了
08/07 10:43, 37F

08/07 10:43, , 38F
千萬記得要有email備份! 以免被婊
08/07 10:43, 38F

08/07 10:44, , 39F
假裝寄封信去問他是不是要這樣做 讓他回答是
08/07 10:44, 39F

08/07 15:02, , 40F
pick過去 可能要解一堆conflict
08/07 15:02, 40F

08/07 15:14, , 41F
Merge只是複製貼上? XD
08/07 15:14, 41F

08/07 17:27, , 42F
把這篇貼給你主管看XD 有很多人幫你背書這很困難
08/07 17:27, 42F

08/07 18:11, , 43F
直接把舊版本從「1133」變成指向2103,這樣符合主管要求嗎
08/07 18:11, 43F

08/07 18:12, , 44F
還是主管要求的是:舊版本必須是「……、1132、1133、2103
08/07 18:12, 44F

08/07 18:12, , 45F
08/07 18:12, 45F

08/07 18:20, , 46F
如果是前者就很好解決,直接把舊版更新到2103的意思。如果
08/07 18:20, 46F

08/07 18:20, , 47F
每個commit都有做好,2103那版本應該也要能動。
08/07 18:20, 47F

08/07 18:20, , 48F
如果是後者,就很麻煩,一定不可能2103單獨那個commit就能
08/07 18:20, 48F

08/07 18:20, , 49F
動,一定是要再補足1133~2103之間對2103而言必要的架構。
08/07 18:20, 49F

08/07 18:20, , 50F
如果只是小功能,說不定參考2103然後自己重寫加到1133上還
08/07 18:20, 50F

08/07 18:20, , 51F
比較快。
08/07 18:20, 51F

08/08 08:31, , 52F
主管都嘛覺得什麼都簡單。可以列出困難點給他
08/08 08:31, 52F

08/08 12:38, , 53F
不懂軟體的主管 大災難的起手式
08/08 12:38, 53F

08/08 14:55, , 54F
認同樓上+1
08/08 14:55, 54F

08/08 18:21, , 55F
先看版本數量,接著一個個export出來用araxix merge
08/08 18:21, 55F

08/08 18:21, , 56F
比對,不要用svn內建的差異,你會累死
08/08 18:21, 56F

08/09 08:23, , 57F
之後肯定會有大驚喜
08/09 08:23, 57F
文章代碼(AID): #1PXgnr7Y (Soft_Job)