看板 Soft_Job 關於我們 聯絡資訊
各位大大好,小弟是程式開發的新手,工作上遇到技術上的問題想上來向大家求救 最近我接手了一份已經開發一段時間的程式 而接到一個任務是:要把某個新功能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
abccbaandy: 104 08/06 13:55
mathrew: 那就只好給他 CTRL+C CTRL+V 囉 08/06 14:00
CGS0: 就練習 看看少了什麼補進去 08/06 14:02
TSW: 找出 feature branch 整個 rebase 過去然後解 conflit 然後讓 08/06 14:35
TSW: 讓測試飛~ 飛不過就回報主管不可能馬上就好~ 08/06 14:35
max241: 確定工作區乾淨後 reset hard到1133 08/06 14:36
max241: cherry-pick 2103的變更 08/06 14:36
usan: 邊搬邊抓error,只能這樣,系統廠常這樣搞 08/06 15:46
abc0922001: SVN還是Git? 08/06 16:01
testPtt: 只能把新功能要的條件一個個補上囉 08/06 16:01
FrAnKw: 這什麼主管?主管沒看過程式碼還是沒寫過程式... 08/06 16:06
FrAnKw: 都只要複製貼上就可以搞定誰還要去研究design pattern? 08/06 16:10
kurtsgm: 說真的...版本差這麼多 架構又不是很好的話...就算用版本 08/06 16:18
kurtsgm: 控制的機制去「搬」....能動的機率大概也很低 XD 08/06 16:18
testPtt: 不然就裝死 我以為主管要自己補條件 08/06 16:19
jj0321: 地基已經爛掉了 不打掉重練是要繼續蓋違樓? 08/06 16:27
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
MOONY135: 兩年阿...我兩個月前跟現在的就差很多了 08/06 17:25
mdkn35: 兩年前囧 08/06 17:35
longlongint: 先高速複製貼上先交給他 證明這個不是複製貼上可解 08/06 18:13
longlongint: 然後找主管信任的人幫你解釋 08/06 18:14
longlongint: 然後最懂新功能的人先問他意見 08/06 18:15
hidog: git的話,搜尋cherry-pick 08/06 18:29
vi000246: 兩年前的與其用Git還不如手動貼 08/06 19:57
kingofsdtw: 2年小Case啦,10年我都在搬惹 08/06 20:37
AIdrifter: 你搞錯重點 08/06 21:38
AIdrifter: 你需要的是 可以三方比對版本的軟體 08/06 21:38
AIdrifter: 請search araxis merge 類似軟體 08/06 21:38
AIdrifter: 我前公司主管也是不懂 08/06 21:38
AIdrifter: 不知誰把diff印出來整整超過百頁a4 08/06 21:38
AIdrifter: 明明用這類軟體一下就解決了… 08/06 21:38
xam: 外行的主管+程式開發的新手.. 這也是軟體的 anti-pattern 啊 08/06 22:35
KKFN: 試試看winMerge手動Merge 08/06 23:30
doranako: 差了兩年的code自動merge應該出錯更多,而且沒抓到隱藏 08/07 08:38
doranako: 風險更大,你只能看history,把新功能的新增code抓出來 08/07 08:38
doranako: ,手動merge比較安全 08/07 08:38
v7q4: 就照他講的ctrl+c ctrl+v 然後改到可以動就好了 08/07 10:43
v7q4: 千萬記得要有email備份! 以免被婊 08/07 10:43
v7q4: 假裝寄封信去問他是不是要這樣做 讓他回答是 08/07 10:44
kurakidream: pick過去 可能要解一堆conflict 08/07 15:02
KanoLoa: Merge只是複製貼上? XD 08/07 15:14
CrystalNik: 把這篇貼給你主管看XD 有很多人幫你背書這很困難 08/07 17:27
jennya: 直接把舊版本從「1133」變成指向2103,這樣符合主管要求嗎 08/07 18:11
jennya: 還是主管要求的是:舊版本必須是「……、1132、1133、2103 08/07 18:12
jennya: 」 08/07 18:12
jennya: 如果是前者就很好解決,直接把舊版更新到2103的意思。如果 08/07 18:20
jennya: 每個commit都有做好,2103那版本應該也要能動。 08/07 18:20
jennya: 如果是後者,就很麻煩,一定不可能2103單獨那個commit就能 08/07 18:20
jennya: 動,一定是要再補足1133~2103之間對2103而言必要的架構。 08/07 18:20
jennya: 如果只是小功能,說不定參考2103然後自己重寫加到1133上還 08/07 18:20
jennya: 比較快。 08/07 18:20
besmartAE: 主管都嘛覺得什麼都簡單。可以列出困難點給他 08/08 08:31
NCUking: 不懂軟體的主管 大災難的起手式 08/08 12:38
cerwvk: 認同樓上+1 08/08 14:55
chrisjohn214: 先看版本數量,接著一個個export出來用araxix merge 08/08 18:21
chrisjohn214: 比對,不要用svn內建的差異,你會累死 08/08 18:21
vn509942: 之後肯定會有大驚喜 08/09 08:23