2013-08-20 12 views
83

Używam filtrów do mangle plików podczas kasowania jak opisano here. Teraz problemem jest to, że definicja filtr jest przechowywana tylko w moim lokalnym pliku konfiguracyjnym:Przechowywanie konfiguracji git jako części repozytorium

$ cat .git/config 
.... 
[filter "dater"] 
     smudge = /home/.../expand_date 
     clean = perl -pe \"s/\\\\\\$Date[^\\\\\\$]*\\\\\\$/\\\\\\$Date\\\\\\$/\" 

Jeśli moi współpracownicy chcą korzystać z tego Date ekspansji, muszą skopiować mój definicji filtra. A jeśli to zmienię, muszę je powiadomić, itd.

Czy mogę zapisać tę część definicji filtru w .git/config w repozytorium i sprawić, żeby Git go używał?

Odpowiedz

85

Dostępne są 3 obsługiwane zakresy pliku .gitconfig: --system, --global, --local. Można również utworzyć niestandardowy plik konfiguracyjny i umieścić go w jednym z obsługiwanych plików.

Dla Twoich potrzeb niestandardowe - jest właściwym wyborem. Zamiast pisać swój filtr w .git/config należy zapisać go w .gitconfig pliku w repozytorium root:

your-repo/ 
│ 
├── .git/ 
│ ├── config 
│ 
├── .gitconfig 
│ 

Tworzenie .gitconfig z filtra i zatwierdzić zmiany. Wtedy twoi koledzy zawsze będą go aktualizować - ale będą musieli uwzględnić to ręcznie. Nie jest możliwe automatyczne dołączenie niestandardowego pliku konfiguracyjnego tylko przez git, ponieważ stwarza on lukę w zabezpieczeniach.

Aby zastosować tę konfigurację na jednym repozytorium, każdy użytkownik będzie musiał uruchomić następujące polecenie w your-repo/:

git config --local include.path ../.gitconfig 

Należy uważać, aby nie przechowywać dane osobowe w zwyczaju .gitconfig, jak user.*, zachować te w Twój globalny .gitconfig.

+14

chcę uniknąć powiadamiania każdego możliwego użytkownika, że ​​musi on zawierać '.gitconfig' Repo w jego' ~/.gitconfig'. Nikt tego nie zapamięta. Czy istnieje sposób, aby GIT ZAWSZE przeczytać "' gitconfig "repozytorium. –

+6

@ZaarHai: Zgaduję, że nie, ponieważ byłoby to niebezpieczne. (Wyobraź sobie klonowanie repo, które rozróżnia polecenia za pomocą czegoś "interesującego", np. Eksportowanie zawartości twojego domowego katalogu). Jeśli masz coś w rodzaju skryptu 'configure' lub podobnego, który użytkownicy muszą uruchamiać, możesz ustawić ten zestaw (lub poprosić użytkownika). – Hasturkun

+1

Jak powiedzieć gitowi, aby używał własnego pliku .gitconfig repo? Stworzyłem jeden, ale nie jest on przetwarzany. –

11

Nie można domyślnie używać pliku .gitconfig w repozytorium git, ale można do niego podłączyć, aby wersja git była wersjonowana.

Można połączyć do niego tak:

[include] 
    path = ../.gitconfig 

Stworzyłem prostą skryptgitconfig.sh który zrobi to za ciebie (znacznie szybciej niż kopia) + prosty .gitconfig pliku, więc jeśli chcesz, weź spójrz na to repo https://github.com/HoBi/dotfiles.


EDIT: Mam usunięty plik, ale można go znaleźć tutaj https://github.com/HoBi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh

+1

Twój link nie działa ... – Sebastian

+0

Naprawiono @XmlmXmlmX. :-) – HoBi

+0

@HoBi wygląda na to, że usunąłeś już Gitconfig.sh z GitHub, z jakiegokolwiek powodu, dlaczego już go nie chciałeś? –

Powiązane problemy