2012-05-04 26 views
5

Tôi có một cấu trúc repo đơn giản như thế này:Làm cách nào để bỏ qua đường dẫn được đánh giá trong git svn?

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

Tôi đang cố gắng sử dụng git svn sao chép nó, nhưng muốn bỏ qua docmisc trên thân cây + tất cả các thẻ và các chi nhánh. Tuy nhiên, tùy chọn ignore-paths không hoạt động như tôi mong đợi.

ignore-paths = (doc|misc) 

Có vẻ như công việc, nhưng tôi lo rằng nó cũng sẽ loại trừ đường dẫn như trunk/code/proj1/doc/ mà tôi muốn giữ lại.

ignore-paths = ^(doc|misc) 

Không làm việc - docmisc được kéo bằng lệnh ban đầu git svn fetch. Làm thế nào để có được một regex làm việc mà sẽ chỉ phù hợp với các thư mục ở gốc như thế này? Trang người đàn ông không nói liệu ignore-paths khớp với đường dẫn "tương đối" sẽ kết thúc tại gốc của git clone (doc, v.v.) hay đường dẫn "đầy đủ" như được thấy trong điều khiển SVN (branches/b1/doc v.v.) , hoặc cái gì khác.

Trả lời

9

Dường như nó khớp với đường dẫn đầy đủ trong kho SVN. regex này, trong đó bao gồm phần trunk/tags/branches của con đường SVN, đã làm các trick:

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

Bằng chữ: con đường phải bắt đầu với một trong số:

  • trunk
  • tags/ , có thể theo sau bởi một đoạn đường dẫn (không chứa /)
  • branches/, có thể theo sau bởi một đoạn đường dẫn (không chứa g /)

... đoạn đường dẫn có tên doc hoặc misc.

+0

Điều này không hiệu quả. Các tệp được sao chép. –

+0

Có phương pháp tương đương cho repo svn không có bố cục svn không? – Spen

+0

@besnep, nếu bạn có nghĩa là "không có * bố cục chuẩn svn", thì tôi nghĩ có: vì regex được so khớp với đường dẫn đầy đủ, bạn có thể sử dụng nó bất kể kho lưu trữ của bạn được đặt ra như thế nào. –