項目背景:
該項目是在2011年11月份使用Asp.net三層幫荷蘭某個客戶開發的機票預定系統
該客戶主要是做中國與歐洲的旅行社業務,特別是最近兩年由於中國的發展因此客戶也越來越重視機票業務
於是他們跟去哪兒溝通並進行了合作,並我司來完成與去哪兒機票業務的對接業務
因為該客戶項目從一開始就由我來負責,因此該對接業務也就自然而然的落到我的身上
問題描述:
因為對接功能需要與現在的項目進行整合,因此我只是在機票預定系統的解決方案里添加了一個新項目(Qunar),並且使用Git來分別進行版本控制(2015前使用VSS,就是因為Git的分支功能)
后面由於去哪兒某個功能是在另一個API里實現的,而且跟對接功能也沒有太大的關系,因此又將其作為一個單獨的項目(QunarServices)來完成
在進行對接功能期間網站項目也有變更(對接功能會影響到網站后台的某個功能)
因為這三個分支實現的功能大部分是不一樣的,所以我只能按不同的分支來進行管理
重點是在三個項目之間(四個分支加上master)同時進行開發,因為所有項目都使用了N個通用的項目(Model等)所以當某個分支對通用的組件項目進行了變更后,其他的三個分支也需要同步以保持一致(某些分支如果不同步可能也不會影響該分支的功能,只是三個分支通用項目進行同步)
關於如何合並其他分支的某些文件,我現在的處理流程是這樣的:
- 先檢驗當前分支與要合並分支通用文件的差異(要合並的分支必須要全部commit)
- 拉出要“合並某分支文件有差異”的所有文件(通用項目中的文件) git checkout 分支名稱 文件名 文件名
- 添加並commit到當前分支 git commit -a -m '注釋 合並其他分支的某些文件 和合並分支提交時的說明信息'
當通用的項目文件很少更改時,以上方案運行的不錯
最近去哪兒項目正在收尾階段,因此在對解決方案進行整合,然后我就
發現三個分支里的通用項目都有差異(最近三個分支都對通用項目進行變更且沒有合並)
這樣就對我整合解決方案帶來了很多阻力(我需要將三個分支的通用項目時行合並)
因為通用項目
都只是引用了該通用項目的DLL組件而已,所以
完全沒有必要在每個分支里進行維護(已經從2015年初到至今)
於是我就在想是不是我的解決方案規划有問題而導致了我錯誤的使用了Git,
但如果有問題的話我該如何規則分支和解決方案呢?
問題來了:
如何在盡量不丟失提交歷史的情況下對整個解決方案和分支進行重新規則
想到的解決方案:
- 在不改變當前分支的情況下,在每個分支里將通用項目進行過濾(不刪除項目文件),只將其保留master分支(master從2015后沒有進行過合並,需要合並所有通用項目的提交歷史大概有50+要循環以上合並流程)
- 將通用項目從每個分支過濾,並單獨作為一個單獨的分支進行維護(同1類似也需要循環以上合並流程)
- 刪除所有分支並重建(不可能,有很多提交歷史)
- 其他??
目前分支說明:
master:VSS遷移后的Web基准分支(2015年從VSS遷移后無提交)
website:基於master web項目分支
qunar2:基於master 去哪兒對接項目分支
qunarTTS:
基於
qunar2 去哪兒對接項目某服務分支
