[技術討論] 兩個remote, 一個對外, 一個內部, 如何不同remote用不同名字?

首先講解一下個policy

有幾間公司合作一個project, 用緊同一個repo, 原則上依個repo內的commit, author必須要係公司名稱

每一間公司有自己team, 自己有一個repo內部用, 而依個repo內的commit, 則必須要係各自developer的名稱

為左符合依個policy, 我就開左兩個branch

一個叫 my_company, 另一個叫 internal

my_company會push去公司之間的repo, 另一個push內部server

而家有三個author

Comp, 負責將internal的commit merge去my_company再push出街 (依個人即係我)

DevA, DevB, 負責開發, 佢地只會access內部的repo




最初我會將branch咁分, 係因為諗住, 當dev們在internal commit完, 我再將internal的更動apply落my_company, 咁我就可以用Comp commit落my_company, push出街就可以淨係見到公司名

但實驗結果, internal 的成個history, 係會完整地copy到my_company, 結果我要用rebase, 在my_company入面逐個commit去改名, 由於commit多, 花既工夫唔少



其實有無簡單D既方法可以滿足依個policy?

冇可能。你咁樣根本完全違反左GIT o既用法...

有樣野你要搞清楚 (或者你而家試完應該有明悟), 人地公司內部O既history 係一定會完完全全咁收晒, 成個 repo 同埋所有 upstream / downstream 都係串埋O既, 所有object 都會依附響同一個 object graph 裏面, 而全部commit 都會有個 SHA 做 identity, 你一改少少野就全個 graph 會唔同左樣.

要做到你想做O既野, 一套 repository 係絕對冇可能做得到.

一係咁, 你開兩套完全獨立O既repo. 一個係 "內部" 用O既, 即係你上述O既設定. 三家公司, 各自用pull request merge 入大O既 master 度. 響呢個 master repository 加 post commit hook, 將每一個 commit 重寫,改committer,  automate 左個 branch -> patch -> commit o既動作 commit 落 repo 2 度. map 好每一個commit 由 repo 1 -> repo 2 o既 SHA..

咁樣做兩邊睇到o既 SHA完全唔同, 乜都甩晒, 不過內部有內部玩, 對街果個俾外人睇, 都未為不可.

呢個其實係 policy o既問題, 唔係 technical.. 直接淨係收 patch, 你自己玩. 或者 establish 一個 committer 只可以係公司.

TOP

如果你 rebase after squashing commits 再 merge 就可以淨係改一個 commit 嘅 author。

不過樓上師兄話齋其實係違反 git 嘅 philosophy。應該問返點解要用公司名 push。諗呢套 branching strategy 出嚟嘅人對 git 嘅理解唔夠。

TOP

相關文章