2010-02-26 15 views
11

Jedną z nieuniknionych dziwactw git jest brak możliwości przechowywania i pobierania metadanych dotyczących pliku. Na przykład na komputerze mac etykiety są przechowywane z "rozszerzonymi atrybutami" (dostępne pod xattr), a każde polecenie kasowania/resetowania/scalania/wyciągnięcia usuwa te atrybuty, jeśli na plik wpłynęło pobranie.Haczyki Git do przechowywania/odzyskiwania metadanych

Rozejrzałem się, aby sprawdzić, czy ktoś napisał już skrypty oszczędzające metadane, ale wyszedłem na sucho.

Więc co chciałbym zrobić, to użyć systemu hakowego git do:

  1. Czytaj rozszerzone atrybuty, gdy pliki są zobowiązani,
  2. Napisz atrybutów do pliku przechowywanego w repozytorium, który również zostaje popełnione ,
  3. Zastosuj rozszerzone atrybuty do plików, które zostały zmodyfikowane w wyniku scalenia/pobrania/zresetowania.

Z którego haczyków należy korzystać? Czy wszystko, czego potrzebuję, to post-receive i pre-commit? Czy pre-commit może również dodać plik do zatwierdzenia (tj. Po zapisaniu nowych atrybutów)?

+0

dlaczego downvote? Jeśli pytanie jest niezadowalające, zostaw komentarz, aby móc go poprawić. –

Odpowiedz

3

gibak tool wykorzystuje pre-commit i post-checkout pozwolić jej ometastore narzędzie zapisu/odczytu metadanych (ewentualnie łącznie xattrs).

Nie chcesz post-receive. Jest uruchamiany na drugim końcu pushów. Działa dla nagich repozytoriów, więc nie ma firmy, która próbuje zaktualizować jakiekolwiek pliki z zawartości zatwierdzonego zatwierdzenia. Zrób to w post-checkout, gdzie wiesz, że będziesz mieć działające drzewo.

+1

po scaleniu jest również tym, który powinien zostać użyty. Zobacz githooks (5) http://ftp.kernel.org/pub/software/scm/git/docs/githooks.html –

+0

@Seth Johnson: dobry połów. Możesz "post-scalić", wykonując taką samą pracę jak "post-checkout", aby odbudować jakiekolwiek metadane, które zostały utracone podczas scalania plików. Łączenie metadanych może być trudne, w zależności od tego, jak wybrane narzędzia przechowują go i udostępniają do przeglądania/porównywania. –

+0

Jeśli ktoś jeszcze jest zainteresowany takim narzędziem jak gibak, Slug (https://github.com/hbaragar/slug) wygląda na to, że jest to bardziej niedawno obsługiwany widelec gibaka z możliwością tworzenia kopii zapasowych na zdalne repozytorium. – mormegil

0

metastore jest w stanie uratować i przywrócić metadanych pliku, przechowując je w oddzielnym pliku (który można umieścić w swoim zobowiązuje)