2012-06-18 11 views
10

Mamy 2 000 000 linii kodu aplikacji w Mercurial. Oczywiście w tym repozytorium znajduje się wiele cennych informacji.Jakie narzędzia lub techniki są dostępne do "dataminowania" mojego repozytorium mercurialnego?

Czy są jakieś narzędzia lub techniki, aby wykopać niektóre z tych informacji?

Na przykład, w ciągu historii projektu, jakie pięć plików zaobserwowało najwięcej zmian? Jakie pięć plików różni się najbardziej od tego, czym były rok temu? Jakieś konkretne linie kodu widziały dużo churnu?

Jestem zainteresowany tego typu rzeczami i nie tylko.

Czy istnieje sposób na wyodrębnienie tego rodzaju informacji z naszego repozytorium?

+2

To nie jest naprawdę [tag: data-mining]. Pytasz o proste, proste statystyki dostarczane przez StatSVN/StatCVS dla innych systemów kontroli wersji. Co więcej, nie jest to pytanie programistyczne. –

+2

OK, wystarczy. Jak więc uzyskać te trywialne statystyki z nieczystości? –

+0

Nick, czy znalazłeś coś przydatnego bez konieczności samodzielnego rzucania? – Rory

Odpowiedz

10

Nie znam żadnych narzędzi specjalnie stworzonych do tego celu, ale szablony logów Mercurial są bardzo wydajne, aby pobrać dane z systemu. Zrobiłem trochę tego rodzaju analizy w przeszłości, a moje podejście było:

  1. Zastosowanie hg log zrzucić zobowiązuje się do jakiegoś wygodnym formacie XML (w moim przypadku)
  2. Napisz scenariusz do importowania xml w coś queryable (bazy danych, lub po prostu pracować z XML bezpośrednio jeśli nie jest zbyt duży)

Oto przykładowe polecenie hg log aby można było tam:

mystyle.txt: (szablon)

changeset = '<changeset>\n<user>{author|user}</user>\n<date>{date|rfc3339date|escape}</date>\n<files>\n{file_mods}{file_adds}{file_dels}</files>\n<rev>{node}</rev>\n<desc>{desc|strip|escape}</desc>\n<branch>{branches}</branch><diffstat>{diffstat}</diffstat></changeset>\n\n' 
file_mod = '<file action="modified">{file_mod|escape}</file>\n' 
file_add = '<file action="added">{file_add|escape}</file>\n' 
file_del = '<file action="deleted">{file_del|escape}</file>\n' 

Przykład wywołania przy użyciu szablonu i zakres dat:

hg --repository /path/to/repo log -d "2012-01-01 to 2012-06-01" --no-merges --style mystyle.txt 
4

Spróbuj wbudowanej hg churn przedłużenia. Jedną rzecz chciałbym użyć go do, na przykład, aby zobaczyć miesięczny wykres słupkowy zatwierdzeń takiego:

> hg churn -csf '%Y-%m' 

2014-02  65 ************************************* 
2014-03  22 ************* 
2014-04  52 ****************************** 
2014-05  67 *************************************** 
2014-06  31 ****************** 
2014-07  29 ***************** 
2014-08  29 ***************** 
2014-09  61 *********************************** 
2014-10  36 ********************* 
2014-11  23 ************* 
2014-12  32 ****************** 
2015-01  60 *********************************** 
2015-02  20 ************ 

(chcieć skonfigurować aliasy, jeśli okaże się, że używasz komendy dość często)

Powiązane problemy