Git

將 $HOME 放入 git 而不是符號連結點文件是否有陷阱?

  • May 31, 2021

多年來,我一直將我的整個$HOME目錄都簽入 subversion。這包括我所有的 dotfiles 和應用程序配置文件、許多腳本、工具和 hack、我喜歡的基本主目錄結構、不少古怪的項目和一個隨機數據倉庫。這是一件好事。雖然它持續了。

但是已經失控了。幾十個系統的基本結帳是相同的,但並非所有這些東西都適合我所有的機器。它甚至不能很好地與不同的發行版一起玩。

我正在清理房屋——將數據分離到它所屬的位置,將一些腳本拆分為單獨的項目,修復應該自動化的東西中的一些斷開的連結,等等。

我的意圖是替換subversiongit的頂級簽出$HOME,但我想將其縮減為我希望在我的所有系統上擁有的東西,這意味著點文件、一些目錄和一些基本的自定義腳本。

**在網上閱讀時,很多人似乎都在使用符號連結方法:複製到子目錄,然後從$HOME儲存庫中創建符號連結。**十多年來,我一直$HOME處於完全的版本控制之下,我不喜歡這種方法的想法,我不明白為什麼人們似乎如此厭惡直接結帳方法。**作為頂級結賬,**我需要了解哪些陷阱?git``$HOME

PS 部分作為良好編碼的練習,我還計劃在 GitHub 上公開我的根結帳。令人恐懼的是,我允許在文件中收集多少安全敏感資訊,這些文件應該可以毫不猶豫地共享!WiFi 密碼、未加密的 RSA 密鑰等。Eeek!

git的,在考慮管理一個無關緊要的主目錄時,至少存在一個重大缺陷subversion

Git 在預設情況下既是貪婪的又是遞歸的

Subversion 會天真地忽略它不知道的任何東西,當它到達一個它不知道的文件夾(或屬於不同的儲存庫)時,它會停止處理從結帳開始或向下處理的文件夾。另一方面,由於命名空間問題,Git 會不斷遞歸到所有子目錄中,使得嵌套簽出變得非常複雜。由於您的主目錄可能也是您簽出和處理各種其他 git 儲存庫的地方,因此在 git 中擁有您的主目錄幾乎肯定會讓您的生活變得一團糟。

事實證明,這是人們將他們的 dotfiles 檢出到一個獨立的文件夾中然後符號連結到其中的主要原因。在你的$HOME. 雖然如果將您的家檢查為顛覆,這純粹是一個偏好問題,但如果使用 git,這將成為一個必要的問題。

但是,有一個替代解決方案。Git 允許使用稱為“假根”的東西,其中所有儲存庫機器都隱藏在一個備用文件夾中,該文件夾可以與簽出工作目錄物理分離。結果是 git 工具包不會混淆:它甚至不會看到您的儲存庫,只會看到工作副本。通過設置幾個環境變數,您可以在管理主目錄時提示 git 在哪裡可以找到商品。如果沒有設置環境變數,沒有人會更聰明,你的家看起來就像是經典的 file-y self。

為了讓這個技巧更加流暢,有一些很棒的工具。vcs-home 郵件列表似乎是事實上的起點,about 頁面方便地總結了操作指南和人們的經驗。一路上還有一些漂亮的小工具,比如vcsh先生。如果你想將你的主目錄直接保存在 git 中,vcsh 幾乎是必備工具。如果您最終將主目錄拆分為幕後的多個儲存庫,請結合vcsh使用mr快速且不太髒的方式來一次管理它。

引用自:https://unix.stackexchange.com/questions/46538