2013-01-25 5 views
5

Używaliśmy bazarów-vcs przez kilka lat, ale zdecydowaliśmy się na migrację do git z powodu kilku długich, stałych irytujących błędów i zatrzymania rozwoju bzr.Migracja bazaru do git z commit-properties, aby połączyć błędy naprawione

Podczas korzystania z bazaru, szeroko wykorzystywaliśmy funkcję "metadanych śledzenia błędów" na bazarze (http://doc.bazaar.canonical.com/bzr.dev/en/user-reference/bugs-help.html). Tak więc każde zatwierdzenie naprawy błędu zawierało identyfikator odpowiadającego mu identyfikatora mantis-bug-Id, dzięki czemu mamy link pomiędzy źródłem a modliszką.

Nasz popełnić-wiadomość nie zawiera modliszki-id, tylko użyliśmy „metadane-feature”:

enter image description here

bardzo ważne jest dla nas, że don `t tracimy te informacje tak Potrzebuję rozwiązania do migracji tych linków w jakiejś formie.

Próbowałem już eksportować/importować nasze repozytorium bazar do git przy użyciu poleceń/fast-eksport-import szybko:

bzr fast-eksport --no-zwykły --rewrite-Tag-names/var/www/source_branch/| git fast-import

Niestety pojawia się następujący błąd:

fatal: This version of fast-import does not support feature commit-properties. 

Jednakże, jeśli mogę użyć opcji --plain zamiast --no-zwykły prace importu, ale tracimy wszystkie połączenia z naszymi błędami.

Czy istnieje jakieś rozwiązanie/sposób obejścia problemu z migracji z bzr na git bez utraty wszystkich tych błędów, które są dla nas tak ważne?

[Edytuj]: Właśnie przeanalizowałem format szybkiego importu/szybkiego eksportu, który jest bardzo prosty. Powinno być możliwe napisanie jakiegoś skryptu, aby zmodyfikować plik i przenieść linie (błędy właściwości ...) do odpowiedniego wiersza komunikatu zatwierdzenia. Jednakże, jeśli istnieje gotowe rozwiązanie, z przyjemnością je usłyszę :)

Odpowiedz

2

Git Fast-import nie obsługuje właściwości metadanych, więc nie było możliwości migracji tych informacji wyłącznie za pomocą istniejących narzędzi.

Ponieważ nie było odpowiedzi, a utrata wszystkich tych błędów nie była dla nas opcją, napisałem program do szybkiego odświeżania strumienia, który jest w stanie przepisać strumień w formacie, który git rozumie, ale z całym naszym identyfikatorem błędu zawarte informacje.

C# nagrywarka działa, wykonując następujące kroki:

  1. Parse zobowiązuje ze strumienia wejściowego
  2. Sprawdź, czy popełnić zawiera błędy w obiekcie polecenia
  3. Przetwarza identyfikator błędu i modyfikować popełnienia-wiadomość z wydobytego błędów ID
  4. wyklucza innych niepodparta bzr-fastexport steruje tylko funkcję ("", "własności gałęzi nick"))

Więcej informacji na temat tego odświeżacza + kod można znaleźć tutaj: http://www.fusonic.net/en/blog/2013/03/26/migrating-from-bazaar-to-git/

+0

Czy masz szansę na opublikowanie pliku binarnego? Narry środowiska C# w miejscu. – Kieveli

1

Miałem podobną potrzebę.Próbowałem przeszukiwać Davida, ale produkowało dane wyjściowe, których importowanie git zakończyłoby się niepowodzeniem. Podejrzewam, że był to subtelny błąd w zmianie nazwy niektórych plików w zatwierdzeniu.

Zdałem sobie sprawę, że może być łatwiej po prostu zmodyfikować "bzr fast-export - plain", aby zrobić to, co chciałem.

Złożyłem błąd w eksporcie (bzr fast-export) na LP: #1606973 i załączyłem rozwiązanie, które zadziałało dla mnie. Po modyfikacji fastimport/exporter.py po prostu zrobiłem:

bzr fast-export --git-branch=master --plain | git fast-import