2009-09-19 7 views
5

Zacząłem używać Mercurial do kontrolowania wersji moich plików źródłowych projektu Drupal (jestem zarówno początkującym użytkownikiem VCS, jak i Mercurial). Jednak baza danych jest nadal "kontrolowana pod względem wersji" przy użyciu katalogu z datowanymi plikami .sql.gz.Używanie haków Mercurial do tworzenia/ładowania zrzutów bazy danych dla wersji

To, czego chcę, to mieć plik zrzutu pojedynczej bazy danych w moim repozytorium, który zostanie zastąpiony bieżącym zrzutem, gdy baza danych się zmieni, i zaimportowany do bazy danych, gdy chcę przywrócić inną wersję.

Zrobiłem to ręcznie i zadziałało. Ale to, co naprawdę chciałbym, to automatyczne ładowanie/ładowanie po każdym zatwierdzeniu/aktualizacji. Naprawdę wolałbym, żeby to podpięło do Mercurial, niż bycie czymś zewnętrznym, jak makefile, które najpierw zrzuca bazę danych, a potem się zobowiązuje, ponieważ lubię pracować z narzędziami TortoiseHg i nie mam ochoty uruchamiać kolejnego skryptu.

Wygląda na to, że coś takiego jak mysql .... < dumpfile.sql na haku update będzie łatwym sposobem na załadowanie zrzutu bazy danych po każdej aktualizacji. Ale co z automatycznym dumpingiem?

Było similar question o wstępnym zatwierdzeniu SVN, a przyjęta odpowiedź brzmiała, że ​​to prawdopodobnie zły pomysł. Czy dotyczy to Mercurial? Może inny hak (prechangegroup?) Zadziała?

EDIT:

powinienem zwrócić uwagę, że używam go przez siebie, na moim komputerze lokalnym. Nie powinien być skalowany poza jednego użytkownika.

Odpowiedz

5

Powinno być dobrze zrzucić bazę danych za pomocą haka pre-commit. Po prostu uważaj, aby nie używać haka precommit, ponieważ jest to coś innego (działa wewnątrz transakcji).

Ogólnie rzecz biorąc, dla każdego polecenia (update, commit, itp.) Hak pre-<command> jest uruchamiany przed wykonaniem polecenia.

+0

Świetnie! Działa poprzez hg commit w porządku. Ale ... jeśli używam tortoisehg, muszę dwa razy zatwierdzić (raz dla plików źródłowych i jeszcze raz dla nowo utworzonego zrzutu bazy danych) ... Czy zdarzyło ci się wiedzieć, jak sobie z tym poradzić? –

+0

Hum oznacza, że ​​THG ogranicza pliki do plików, które według nich zostały zmienione. Nie znam THG na tyle dobrze, aby to obejść (może zapytać na liście mailingowej THG). – tonfa

+0

Dzięki i tak. Co najwyżej mogę używać wiersza poleceń do zatwierdzania. Nie jest tak źle. –

1

Wygląda na to, że jest to bardziej operacja aktualizacji. Zakładam, że pracowałeś nad bazą danych, celowo wybrałeś wyeksportowanie schematu sql i popełniłeś. Problem pojawia się, gdy ktoś inny aktualizuje się od ciebie (lub jakiejś innej lokalizacji) lub aktualizujesz z nich. Mercurial ma alternatywną możliwość utworzenia własnej wtyczki/rozszerzenia mercurial, która może faktycznie rozmawiać z bazą danych do bazy danych (mysql) i potencjalnie dostarczyć więcej przydatnych informacji. Wszystko zależy od tego, czy znasz trochę pytona.

+0

Powinienem dodać, że jest to prosta, pojedyncza konfiguracja programisty. Nikt nie byłby aktualizowany ode mnie lub vice versa (dodałem go teraz). Ponadto - chciałbym importować dumpy na aktualizacjach, ale także zrzuty EXPORT na commits, i tam jest trudność (myślę?). Co do mercurial plugin/extension - znam trochę Pythona (ale nie API Mercuriala). Co może mi dać to, że mysqldump/mysql nie może? –

Powiązane problemy