2011-08-11 41 views
21

Tôi là người dùng SVN tại thời điểm này và đang xem xét việc chuyển các dự án của tôi sang git.Nhiều dự án trong một repo git?

Tôi sử dụng một kho SVN để giữ tất cả các dự án tôi tạo. Cấu trúc của tôi giống như sau:

/ 
    /group1 
     /subgroup1 
      /project1 
       /branches 
        ... 
       /tags 
        ... 
       /trunk 
        ... 
      /project2 
       ... 
     /subgroup2 
      /project3 
       ... 
      /project4 
       ... 
    /group2 
     /subgroup3 
      ... 
     /subgroup4 
      ... 
    /lib 
     /lib1 
     /lib2 
     /lib3 

Như bạn có thể thấy tôi giữ các dự án theo nhóm và /lib chứa thư viện được chia sẻ giữa các dự án.

tôi đã chọn cấu trúc loại này vì:

  1. cấu trúc repo tương tự đã được sử dụng trong công ty nơi tôi học cách sử dụng SVN.
  2. Cho phép tôi có một svnserve chạy dưới dạng dịch vụ/daemon trên máy của mình với tất cả các dự án được lưu trữ trên đó (tôi không thích phương pháp tiếp cận filepath).

Bây giờ ... đến điểm. Tôi đã tự hỏi:

Cách loại công việc này sẽ hoạt động nếu tôi chuyển sang git?

Cụ thể:

  1. Nó sẽ được đơn giản để di chuyển cây repo git?
  2. Giả sử mỗi dự án yêu cầu repo riêng *, làm thế nào tôi có thể phục vụ tất cả (lý tưởng được nhóm theo cách tương tự) qua svnserve git tương đương.

*) Tôi đọc về git và tôi hiểu đó là trường hợp, nhưng tôi muốn kiểm tra kỹ với những người có kinh nghiệm.

Trả lời

29

Trong Git, tốt hơn nên có từng dự án trong repo của riêng nó và các thư viện trong một repo khác nếu cần và được sử dụng làm mô-đun con (tương đương với svn externals) trong mỗi dự án. Điều này là bởi vì trong Git, repo là một khái niệm nhẹ hơn nhiều so với SVN và cũng quan trọng hơn, không có khả năng sao chép các thư mục riêng lẻ (không bị nhầm lẫn với thanh toán thưa thớt) trong một repo riêng biệt giống như bạn có thể thanh toán và làm việc trên các thư mục riêng lẻ trong SVN. Vì vậy, nếu bạn có tất cả các dự án trong một repo, bạn sẽ phải sao chép tất cả.

Cung cấp repo Git, sử dụng thông minh-http, git daemon và ssh khá đơn giản. Ngoài ra còn có Gitolite để quản lý nhiều repos (bao gồm cả ủy quyền và xác thực). Đọc chương liên kết về ProGit về việc phân phối Git repos- http://progit.org/book/ch4-2.html

Đến nhóm của bạn, bạn có thể đặt repos trong các thư mục theo cấu trúc nhóm của bạn và sử dụng phương thức http thông minh, theo đó url repo sẽ trông giống như các url bạn đã sử dụng với SVN, tất cả các dự án có vẻ như nằm trong nhóm ...

+0

Tôi thực sự có thể đến và mua sách để hiểu thêm về git. Tôi chỉ tự hỏi sẽ không có ý nghĩa hơn cho tôi để giữ cho repo SVN của tôi như là repo chính và sử dụng git để kiểm soát nguồn địa phương? Tôi có xu hướng làm việc trên nhiều máy vì vậy điều này sẽ làm cho một số ý nghĩa tôi nghĩ. –

+0

@Michal M Có, nhiều người làm điều đó với cây cầu git-svn. Nó không phải là một sự lựa chọn tồi ở tất cả thực sự để làm điều đó – manojlds

+0

cảm ơn bạn bro, câu trả lời của bạn chắc chắn làm cho ngày của tôi –

1

Bạn có thể có tất cả các dự án trong một kho lưu trữ, nhưng đó thực sự là ý tưởng tồi vì bạn luôn phải làm việc với toàn bộ repo.

Để chạy máy chủ git, nếu bạn chỉ cần một người dùng (bạn), máy chủ có cài đặt git và ssh là đủ. Xem ví dụ this article.

5

Ngoài các câu trả lời khác, bạn cũng có thể sử dụng GitSlave để liên kết nhiều git repos với nhau.

Các vấn đề liên quan