一千萬個為什麽

搜索

你如何執行git行為,包括本地(特別是在Windows上)?



我正著手將這個.NET商店從svn移到git,並且在我們翻轉交換機之前發現了一些我希望得到解決方案的輔助問題。

我在這個問題上特別提到的一個問題是結束執行。默認情況下,git for windows使用'checkout crlf,commit lf'進行安裝,這對於僅由crlf結尾組成的一堆源(據我所知)是無效的。

我不知道我會盲目地信任任何給定的開發者,甚至在給定指令的情況下正確配置它,所以我正在考慮以下的一個(或兩個),但是如果有人在這裏又走了另一條路線,我很好奇。

  • 一個預先提交的鉤子,用於檢查任何行結束符(或者所有行結束符),並在該事件中拒絕。
  • 分發給開發人員的安裝腳本,使用“按原樣”填充全局配置。

附:在寫這篇文章的時候,我發現從svn到git的初始轉換可以提供默認的方式,只要人們堅持默認,那也是非常無縫的。作為一名使用git的開發者,使用非默認的“原樣”安裝git的.NET商店,我也創建了自己的問題(他們在我到達之前都會默認啟用默認) 。所以我仍然傾向於某種執法機制。

轉載註明原文: 你如何執行git行為,包括本地(特別是在Windows上)?

一共有 3 個回答:

為了回答如何在本地執行某些操作的問題,您不可能不經過一些非常繁重的工作來管理和執行每個開發人員工作站的狀態,而且我通常認為開發人員可能應該是本地管理員開發其開發人員機器,因為如果他們不是,那麽他們只是花時間去思考我們如何獲得這些特權。

這可能是因為在使用分布式版本控制時,您不需要關心本地配置的狀態。您應該只關心您的配置的狀態。假設您將git用作集中式版本控制系統,因為基本上每個人都會這麽做,因為它最簡單,那麽我們假設“您的”配置是保存在中央服務器上的代碼副本。

如果是這種情況,那麽你不應該接受合並,就像你提到的那樣,打破crlf/lf行尾。所以當你試圖用服務器端邏輯來推動你的變化時,你會強制這樣做,即拒絕請求用他們的 來汙染你的 repo,這可能會破壞文體選擇。

我們需要在github上使用Pull請求將審查過程放到我們的主要開發或主分支上。在審查過程中,如果許多文件有空白區域或行結束區別,我們會將拉取請求標記為需要更改,並堅持要求它們遵循正在進行拉取請求的dev或master分支的格式。

還有一些不錯的工具,取決於你使用哪種語言和你使用的CI工具,這些工具可以在構建過程或拉取請求步驟中根據你設置的規則自動格式化代碼。這也有助於保持代碼的一致性,並在提交代碼時盡量減少格式化問題。

您可以使用每個存儲庫配置在每個存儲庫的基礎上覆蓋用戶的配置。當被視為中央資源的回購協議完成時,它應該使用克隆進行傳播,並將其拖到其他回購站(包括本地回購站),從而集中覆蓋本地配置。

您可以通過中央的掛鉤進一步執行此操作回購檢查文件結尾是他們應該是什麽,拒絕合並/推動,如果它不是猶太教。然而,這些鉤子不會與回購克隆,至少不是直接的,但這不是必需的,因為規則只是真的需要在中央回購庫上執行。

在您的 git init 中使用模板,您可以確保您的回購協議創建與所有gitignore,gitattributes等文件只是你想要的方式。

最後一件事,與你的問題沒有直接關系,我發現當svn saavy團隊成為一個基於git的工作流程時,最大的摩擦點是如何讓他們習慣於中間的額外回購。我發現這個視覺提示表有助於解釋哪個命令對哪個部分有影響。

希望這有所幫助。