2013-08-12 14 views
45

Widziałem kilka osób, które mają repozytorium git z plikami dot. Zastanawiam się, czy po prostuDodawanie .vim ~/.vimrc do github (aka plików dot)

cd ~/ 
git init 
git add .vimrc 
// etc 

? A w ten sposób są one aktualne? Czy też prawdopodobnie wykonują kopie i synchronizują je?

Jaką strategię polecacie lub stosujesz? Przede wszystkim nie chcę popełnić i naciskać całym moim ~/

Dzięki

Odpowiedz

62

Making repozytorium git domu jest chyba zły pomysł (można byłoby spędzać więcej czasu na tworzenie pliku .gitignore niż robić to, co naprawdę chcę to zrobić).

Proponuję użyć osobnego katalogu git dla twoich plików dotfiles (np. ~/git/dotfiles) i robiąc im dowiązania symboliczne do twojego domu (np. ln -s ~/git/dotfiles/.vim ~/.vim, itp.).

Jeśli nie możesz sobie pozwolić na ręczne tworzenie linków symbolicznych za każdym razem, gdy chcesz zainstalować gdzieś pliki dotfile, możesz użyć skryptu podobnego do następującego: https://github.com/sitaktif/dotfiles/blob/master/bin/create-symlinks (używa konfiguracji https://github.com/sitaktif/dotfiles/blob/master/CONFIG.example).

+1

+1. Sprawdzone rozwiązanie, naprawdę działa. – madhead

+13

To rozwiązanie działa dobrze. Ale nie musisz tracić nadmiernej ilości czasu na zarządzanie '' gitconfig'. Możesz zamiast tego zignorować wszystko. './*' zignoruj ​​wszystko '! .vimrc' nie ignoruj' .vimrc' – Sethish

+0

@Sethish, Działa pięknie. Myślę, że twoja jest najlepsza/najczystsza odpowiedź. Jeśli to zrobisz, dam +1, aby było bardziej zauważalne! – Jon49

38

mam ~/.vim katalogu pod kontrolą wersji i moje „prawdziwe” vimrc (jeden z moich ustawień) wewnątrz tego katalogu, przy ~/.vim/vimrc:

~/ 
---- .vim/ 
---- ---- (plugins and stuff) 
---- ---- vimrc 
---- .vimrc 

moich stałych ~/.vimrc ma tylko jedną linię:

runtime vimrc 

Nie trzeba tworzyć dowiązań symbolicznych lub cokolwiek innego.

To jak bym wciskam config na nowym komputerze gdzie jest już zainstalowany Git:

$ cd 
$ git clone [email protected]:romainl/dotvim.git .vim 
$ echo "runtime vimrc" > .vimrc 

Co następuje jest cały proces tworzenia. Zakładam, że utworzyłeś konto i repozytorium o nazwie "vimconfig" na Githubie i że masz już starannie przygotowane ~/.vimrc i dobrze zorganizowane ~/.vim/.

$ cd 
$ mv .vimrc .vim/vimrc 
$ echo "runtime vimrc" > .vimrc 
$ cd .vim 
$ git init 
$ echo "This is my Vim config." > README 
$ git add * 
$ git commit -m "My Vim config is versioned." 
$ git remote add origin https://github.com/username/vimconfig.git 
$ git push origin master 

W tym momencie powinieneś mieć taką samą treść na Github i w lokalnym repozytorium.

Zarządzasz tym repozytorium normalnie i naciskasz zatwierdzenia, gdy jesteś gotowy. Prosty.

Zauważ, że cała rzecz Githuba jest przydatna tylko wtedy, gdy potrzebujesz/chcesz zsynchronizować konfigurację na wielu komputerach lub w jakiś sposób chcesz/chcesz udostępnić ją innym. Jeśli nie, nie ma sensu używanie GitHub w ogóle.

(edycja)

Vim 7.4 wprowadzono nowy, bardzo przydatne, schemat: wygląda na zwykłe ~/.vimrc a także dla ~/.vim/vimrc więc to nawet mniej pracy dla Ciebie:

$ cd .vim 
$ git init 
$ echo "This is my Vim config." > README 
$ git add * 
$ git commit -m "My Vim config is versioned." 
$ git remote add origin https://github.com/username/vimconfig.git 
$ git push origin master 

Oczywiście, strategia Zasugerowałem początkowo jest nadal ważna, jeśli trzeba radzić sobie z mieszanymi wersjami Vima: Vim wie, co robić i nie zgnije w nieskończonej pętli.

+0

W systemie Windows jest to% USERPROFILE% \ vimfiles \ vimrc – evpo

+0

Świetna odpowiedź! Nie komplikuj! Jak twoje myślenie! Dzięki – Mantisimo

3

Mam już folder "pakunku", w którym umieszczam wszystkie moje wtyczki do ładowania przez Pathogen. Zrobiłem więc ten folder w folderze git (z wtyczkami jako submodułami) i umieściłem tam mój vimrc.

W oficjalnym .vimrc piszę:

let $MYVIMRC="<path_to_vimrc_in_bundle_folder>" 
source $MYVIMRC 
... 
call pathogen#infect() 

i ja nie WERSJA!

To pozwala mi udostępnić moją konfigurację między moim komputerem z systemem Linux w domu i moim pudełku Windows w pracy. Mogę również umieścić oficjalne konfiguracje .vimrc specyficzne dla maszyny lub te, których nie chcę publicznie udostępniać (takie jak profile dbext, które zawierają loginy i hasła ...)

1

Oto agnostyka platformy i powłoki rozwiązanie agnostyczne bez żadnych zależności innych niż dostępna dla ciebie skorupa kompatybilna z bourne (bash, zsh, ksh, itp.). To działa na Mac, Linux, & Windows:

dotsys

Będzie on automatycznie synchronizować zmiany w dotfiles z github i wielu maszynach, wraz z wieloma innymi funkcjami.

0

Wyjazd rozwiązanie steakcobra „s w Hacker News:

git init --bare $HOME/.myconf 
alias config='/usr/bin/git --git-dir=$HOME/.myconf/ --work-tree=$HOME' 
config config status.showUntrackedFiles no 

~/.myconf gdzie jest lokalizacja gołego repozytorium git. Następnie wszystkie pliki w $HOME można wersjonowanych tak:

config status 
config add .vimrc 
config commit -m "Add vimrc" 
config add .config/redshift.conf 
config commit -m "Add redshift config" 
config push 

Jeśli potrzebujesz dodatkowych wyjaśnień, Nikola Paolucci warunkiem great explanation.