To, co robię (z tymi samymi celami), to umieścić moje pliki konfiguracyjne w podkatalogu ~/lib
i mieć dowiązania symboliczne w moim katalogu domowym, np .emacs -> lib/emacs/dot.emacs
. Trzymam tylko pliki konfiguracyjne, które napisałem jawnie, pod kontrolą wersji; mój katalog domowy zawiera wiele automatycznie tworzonych plików kropek, które nie są pod kontrolą wersji. Zatem ~/lib
jest pod kontrolą wersji, a mój katalog domowy nie.
Mam skrypt, który tworzy dowiązania symboliczne z plików poniżej ~/lib
. Kiedy tworzę konto na nowym komputerze, zapełniam je, sprawdzając ~/lib
i uruchamiając ten skrypt.
Moje doświadczenie dotyczy CVS, a nie git, więc nie można go w 100% przenieść. Jednym z powodów, dla których nie umieściłem mojego katalogu domowego bezpośrednio w CVS, jest to, ~/.cvsignore
że dotyczyłoby wszystkich moich kas CVS, a nie tylko mojego katalogu domowego; git nie ma tego problemu. Minusem tego podejścia w porównaniu z kontrolowaniem wersji katalogu głównego jest to, że nie można użyć git status
do rozróżnienia pliku, który jawnie postanowiono zignorować (który byłby wymieniony w pliku ignorowania, więc nie jest wyświetlany) i plik, o którym nie masz zdania (który byłby wyświetlany za pomocą a ?
).
Niektóre pliki muszą się różnić na różnych komputerach. Umieszczam je w katalogu o nazwie ~/Local/SITENAME/lib
i albo tworzę dla nich dowiązania symboliczne, albo (dla formatów plików, które go obsługują) zawierają dyrektywę dołączania w pliku poniżej ~/lib
. Mam również dowiązanie symboliczne ~/Here -> ~/Local/SITENAME
. Ponieważ git, w przeciwieństwie do CVS, jest zaprojektowany do obsługi głównie podobnych, ale nie identycznych repozytoriów, może istnieć lepszy sposób zarządzania plikami specyficznymi dla komputera. Niektóre z moich plików kropek nie są w rzeczywistości symbolicznymi linkami, ale są automatycznie generowane z treści pod ~/lib
i ~/Here
.