2016-02-19 12 views
14

Nie mogłem znaleźć niczego konkretnego, ale jeśli przeoczyłem, daj mi znać.Pociągnij, ale nigdy nie pchnij pliku.

Mam plik w git, który musi tam być. Raz usunięty użytkownik będzie musiał go edytować, aby dodać do niego swoje własne poświadczenia. Podczas edycji przez osobę, nie chcę, aby pojawiła się jako zmieniona lub cokolwiek, ponieważ chcemy zachować plik ogólny bez poświadczeń w naszym repozytorium. Czy istnieje opcja ustawienia pliku jako "Pociągnij ten plik, ale nigdy go nie naciskaj"? Obecnie mamy plik o nazwie Upload.bat_COPY_EDIT_RENAME, co, mam nadzieję, sprawi, że będzie oczywiste, co robić, a ja mam Upload.bat w .gitignore. Chciałbym czegoś bardziej idiotycznego.

Wiem, że istnieją opcje takie jak --assume-unchanged, ale nie chcę, aby uruchomić go za każdym razem i wydaje się to trochę jak poprawki bandaid, które mogą potencjalnie powodować problemy później.

Dzięki za pomoc!

Odpowiedz

5

Proponuję nieco inne podejście ... Możesz napisać swoją Upload.bat, aby odczytać z pliku ustawień przy użyciu wybranego przez ciebie formatu. Powiedz, że to nazywasz, secrets.txt. Następnie możesz bez obaw dodać secrets.txt do swojego .gitignore i zatwierdzić Upload.bat. Gdy użytkownicy będą ciągnąć repozytorium, otrzymają Upload.bat i będą mogli utworzyć własne secrets.txt.

Możesz ustawić secrets.txt tylko nazwę użytkownika i hasło, oddzielone znakiem nowej linii. Powinny być trywialne, aby parsować w ten sposób.

+0

Nie jestem pewien, czy szukamy czegoś tak złożonego, ale to rozwiąże problem, który mamy, gdzie jest inny plik Upload.bat dla naszych 3 repozytoriów (Dev, UAT, Prod) i zaoszczędzić czas na edycję każdego z tych plików jako pierwszego czas pracy nad tym środowiskiem. – GRobb

2

Jeśli każda osoba zamierza zmienić nazwę pliku, możesz dodać plik Upload.bat * do pliku .gitignore, a następnie git nie powinien śledzić żadnych nowych plików z tym schematem nazewnictwa. Więcej informacji na temat gitignore

+0

Zakłada się, że po zmianie nazwy zostaną zmienione na Upload.bat_myname lub coś, co dołącza do Upload.bat – DeveloperDemetri

+0

Edytują one rzeczywistą zawartość pliku, a następnie plik zostanie zmieniony na "Upload.bat" Idealnie po prostu mam "Upload.bat" w gitarze, który jest ściągany, a następnie edytowany, ale nigdy nie jest wypychany. – GRobb

+0

Jeśli głównym plikiem do pobrania jest Upload.bat_COPY_EDIT_RENAME, to po prostu umieść "Upload.bat" (bez symbolu wieloznacznego w koniec) w .gitignore (zakładając, że git jeszcze nie śledzi tej dokładnej nazwy pliku) i powinien zignorować pliki zmienione na "Upload.bat", zachowując Upload.bat_COPY_EDIT_RENAME. Upewnij się, że Git prawidłowo ignoruje plik przed wprowadzeniem jakichkolwiek zmian, które go zawierają. – DeveloperDemetri

1

Zgodnie z moją wiedzą, git nie ma stałego ustawienia, aby pociągnąć, ale nigdy nie naciskać pliku.

Można uzyskać bardziej niezawodne obejście, przechowując plik szablonu w git (tak jak już to robisz) i mając skrypt budowania (you do have one, right?) sprawdzić niestandardowy plik. Jeśli dostosowany plik istnieje, świetnie, kontynuuj z kompilacją. Jeśli nie istnieje, poproś programistę o jego poświadczenia i skonfiguruj. Następnie kontynuuj z budową. Spersonalizowana wersja pliku jest oczywiście w .gitignore.

Jest to w zasadzie to, co masz teraz, ale z dodatkiem skryptu budowniczego służącego przypomnieniu dla programisty, zamiast polegania na zapominalskim, niepomnym człowieku, aby miejmy nadzieję zauważyć i zrozumieć zabawnie nazwany plik gdzieś w ich systemie plików .

Dodatkową korzyścią wynikającą z faktu, że skrypt obsługuje tworzenie niestandardowego pliku, jest możliwość jego automatycznej aktualizacji w przypadku zmiany szablonu.

W zależności od poświadczeń, może zajść potrzeba podwójnego sprawdzenia, aby upewnić się, że nie są one rejestrowane w żadnych dziennikach podczas uruchamiania skryptu kompilacji. Obejmuje to przesyłanie wyników do pliku.

1

Jednym podejściem, które nie wymaga dodania do gitignore Upload.bat, jest użycie pliku wsadowego.

można dodać plik o nazwie credentials.txt.dist do repozytorium o następującej treści:

username=username_here 
password=password_here 

a następnie w pliku wsadowym:

for /f "delims=" %%x in (credentials.txt) do (set "%%x") 

Bezwstydnie zaczerpnięte z Batch file include external file for variables

I nie testowany :)

The skrypt wsadowy powinien prawdopodobnie sprawdzać błędy. Przynajmniej powinien wygenerować opisowy komunikat o błędzie, jeśli nie został podany credentials.txt.

Powiązane problemy