To pytanie przydarzyło mi się podczas gry z git, ale zapytam ogólny przypadek ...Czy jakikolwiek system kontroli wersji ma funkcję "trwałej zmiany tylko lokalnej"?
Po prostu pomyślałem o funkcji, która może być przyjemna dla kontroli wersji, ale nie wiem, czy to istnieje lub jak się nazywa. Chcę to nazwać trwałymi zmianami lokalnymi.
Załóżmy, że mam plik konfiguracyjny w svn, który ma wiele przydatnych, nieodkształcalnych rzeczy (i tak musi być w kontroli wersji), ale ma jedną sekcję, którą każdy musi sam edytować. Może konfiguracja bazy danych, nazwa użytkownika i hasło lub lokalna ścieżka do oprogramowania innej firmy. Twoje opcje w tej sytuacji:
Edytuj wojny w kontroli wersji. Po prostu dalej zmieniaj plik i mam nadzieję, że wszyscy inni zrezygnują z edycji pliku, zanim to zrobisz.
Edytuj, ale nigdy nie zatwierdzaj tych zmian. Po prostu siedzą tam, powodując, że twoje polecenie "Co nowego/zmienione" wygląda na brudne, i musisz pamiętać, aby tego nie zatwierdzać.
Szablon. Usuń plik z kontroli wersji i sprawdź jego kopię za pomocą .template na końcu. Lokalnie skopiuj plik i zmień jego nazwę, wprowadzając zmiany.
Użyj nowej (fikcyjnej?) Funkcji trwałej zmiany lokalnej. Dokonaj zmiany, a następnie wydaj polecenie "nagrywaj-zmieniaj-jak-lokalnie-trwałe", które określa poprawkę i po każdej aktualizacji ponownie umieszcza poprawkę.
Czy ta funkcja istnieje w dowolnym miejscu (wydaje się, że git jest ukryty, ale cel jest nieco inny)? Jeśli nie istnieje, czy istnieje dobry powód, dlaczego nie? (czy ktoś o tym pomyślał i zdecydował, że to zły pomysł?)
+1. To jest sposób na zrobienie tego. Czyste i nieinwazyjne, i nie musisz mieć brudnych drzew źródłowych z niezamocowanymi zmianami leżącymi w pobliżu. – sunny256
Gdy zaczniesz mieć konflikty scalania, to jest trochę do zrobienia, aby naprawić ten sam scala za każdym razem, gdy trzeba dokonać ponownego podziału. Nie musisz ciągle naprawiać połączeń, jeśli użyjesz 'git merge' zamiast' git rebase', ale nie wiem, czy to powoduje inne problemy ... –