2012-05-04 14 views
5

mam prosta konstrukcja repo tak:W jaki sposób ścieżki ignorowane są oceniane w git svn?

trunk 
    code 
    othercode 
    doc 
    misc 
branches 
    b1 
     code 
     othercode 
     doc 
     misc 
    b2 
tags 
    t1 
    t2 

Próbuję użyć git svn żeby go klonować, ale chcę pominąć doc i misc na pniu + Wszystkie znaczniki i oddziałów. Jednak opcja ignore-paths nie działa tak, jak bym się spodziewał.

ignore-paths = (doc|misc) 

wydaje się działać, ale obawiam się, że będzie to również wykluczyć ścieżkę jak trunk/code/proj1/doc/, które chcesz zachować.

ignore-paths = ^(doc|misc) 

nie działa - doc i misc są ciągnięte w wyniku wstępnej polecenia git svn fetch. Jak uzyskać działające wyrażenie regularne, które będzie pasować tylko do katalogów w katalogu głównym? Strona podręcznika nie mówi, czy ignore-paths pasuje do "względnej" ścieżki, która kończy się w katalogu głównym klonu git (doc itd.) Lub "pełnej" ścieżki widocznej na zdalnym kontrolerze SVN (branches/b1/doc itd.) , albo coś innego.

Odpowiedz

9

Wygląda na to, że pasuje do pełnej ścieżki w repozytorium SVN. Ten regex, który obejmuje część trunk/tags/branches ścieżki SVN, wystarczyły:

ignore-paths = ^(trunk|tags/[^/]*|branches/[^/]*)/(doc|misc)/ 

Słownie: ścieżka musi zaczynać się od jednego:

  • trunk
  • tags/ , po którym może następować jeden segment ścieżki (niezawierający)
  • branches/, po którym może następować jeden segment ścieżki (nie zawiera g /)

... wtedy odcinek ścieżki nazwie doc lub misc.

+0

To nie działa. Pliki są mimo wszystko sklonowane. –

+0

Czy istnieje metoda równoważna dla svn repos bez układu svn? – Spen

+0

@besnep, jeśli masz na myśli "bez * standardowego * układu svn", wtedy myślę, że tak: ponieważ wyrażenie regularne jest dopasowane do pełnej ścieżki, możesz użyć go niezależnie od tego, jak wygląda twoje repozytorium. –

Powiązane problemy