Mercurial: jak zignorować zmiany w śledzonym pliku

Mam Plik z ustawieniami bazy danych w moim projekcie, który ustawiłem na kilka domyślnych. Plik jest śledzony przez Mercurial i sprawdzany. Ponieważ ten plik będzie edytowany z różnymi wartościami różnych maszyn programistycznych, czy istnieje sposób, w jaki mogę powiedzieć Mercurial, aby ignorował nowe zmiany w tym pliku?

Próbowałem dodać plik do pliku .hgignore, ale ponieważ plik jest śledzony, nie jest ignorowany. To jest w porządku i dobre w innych sytuacjach, ale zastanawiam się, czy jest mogę w czymś pomóc?

Author: Martin Geisler, 2010-05-18

8 answers

Użycie szablonu pliku jest zdecydowanie najlepszym rozwiązaniem. Na przykład, jeśli Masz plik database.ini, Zatwierdź plik database.ini.template i zignoruj bazę danych.ini in .hgignore

 28
Author: yanjost,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-18 13:09:27

Jeśli zawsze chcesz zignorować plik, możesz dodać opcję -X jako domyślną dla commit do pliku konfiguracyjnego .hg/hgrc:

[defaults]
commit = -X program.conf
 28
Author: sth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-01 07:14:37

Napisaliśmy rozszerzenie o nazwie exclude . Automatycznie doda opcje -X w poleceniach, które je obsługują -- więc hg status i hg commit nie będą widzieć zmodyfikowanego pliku. Działa on poprzez odczyt pliku .hgexclude z katalogu głównego repozytorium, podobnie jak plik .hgignore. Dodajesz pliki, które chcesz tam wykluczyć:

syntax: glob
db.conf

Rozszerzenie działa całkiem dobrze, ale jest znana sytuacja, w której nie powiedzie się: merges I commit, który następuje po połączeniu (jest to udokumentowane na wiki). Trzeba by to ulepszyć, aby zapisać modyfikacje do pliku tymczasowego, a następnie je przywrócić. Skontaktuj się z nami, jeśli potrzebujesz tej funkcji.

 12
Author: Martin Geisler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-28 01:40:03

Nie ma naprawdę zautomatyzowanego procesu, ale możesz spróbować (jak w tym więc pytanie) -X opcja na hg commit:

% hg stat
M myfile
% hg commit -X 'myfile'

(inne rozwiązania mogą obejmować shelve lub hq)

Jednak nie jest to "właściwe" rozwiązanie. Polecam raczej wersjonowanie:

  • plik szablon
  • skrypt mogący wygenerować ostateczny plik (który można modyfikować, ale można go całkowicie zignorować)
 8
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:33:59

Jeśli używasz TortoiseHG, otwórz Ustawienia repo, przejdź do sekcji Commit(2.ikona na dole po lewej stronie) i dodaj nazwę pliku (y) do listy Auto Exclude po prawej stronie (~3. od dołu listy).

Z https://tortoisehg.readthedocs.io/en/latest/settings.html#commit

 5
Author: CAD bloke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-12 18:39:42

Zazwyczaj sprawdzasz w referencyjnej kopii pliku i śledzisz go, a następnie każesz deweloperom zrobić kopię tego dla lokalnego rozwoju, tak naprawdę nie chcesz, aby deweloperzy edytowali plik kontrolowany źródłowo dla swoich własnych środowisk.

Jeśli Twój system konfiguracyjny go obsługuje, jest jeszcze łatwiej, jeśli możesz użyć pliku nadpisującego, który po prostu nadpisuje wartości w kopii referencyjnej (np. łańcuch połączenia z bazą danych). W ten sposób deweloperzy muszą tylko zachować bardzo minimalny lokalny zestaw nadpisanie wartości.

 2
Author: Paolo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-18 11:19:38

Jeśli plik jest już śledzony, możesz wydać polecenie Forget do pliku. Jeśli używasz TortoiseHg, kliknij prawym przyciskiem myszy plik podczas zatwierdzania i wybierz zapomnij. Plik musi również znajdować się na liście ignorowanych.

Miałem ten sam problem co Twój, plik ciągle pojawia się przy każdym commicie nawet-choć jest już na liście ignorowanych. Próbowałem komendy Forget i udało się.

 2
Author: radztech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-10 07:28:08

Możesz spróbować hg forget. Więcej szczegółów można znaleźć w oficjalnej instrukcji dotyczącej tego samego polecenia . U mnie zadziałało.

Myślę, że coś takiego jest bliższe poprawnej odpowiedzi na pierwotne pytanie Mercurial: jak ignorować zmiany w śledzonym pliku , a nie inne sugerujące szablon itp.

 2
Author: András,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-04 11:30:46