2014-05-23 14 views
8

Làm thế nào để thiết lập TeamCity kích hoạt để bắt đầu xây dựng trên những thay đổi trong git submodule?Kích hoạt một TeamCity xây dựng trên những thay đổi trong một git submodule

Hiện tại bạn phải cập nhật con trỏ cam kết phụ để kích hoạt một bản dựng trong kho lưu trữ chính, để TC sẽ đăng ký thay đổi trong kho lưu trữ chính.

Cập nhật

Vấn đề là submodule nên luôn theo dõi một bậc thầy chi nhánh. AFAIK điều này không thể đạt được thông qua git chính nó. Tôi chỉ muốn xây dựng để vượt qua giới hạn git trong vấn đề đó.

Trả lời

1

Không thể thực hiện điều đó vì TeamCity (và git) không thể biết rằng có bản cập nhật. Submodule nhập vào một repo chỉ trỏ đến một cam kết.

Bản cập nhật sẽ là gì? Có thể có nhiều chi nhánh và cam kết từ cam kết này. Chỉ bạn mới có thể quyết định vị trí môđun con sẽ được cập nhật.

+0

Làm thế nào về [git submodule tracking latest] (http://stackoverflow.com/questions/9189575/git-submodule-tracking-latest), không phải là nó cung cấp thông tin chi nhánh? –

1

Tôi vừa xem xét cố gắng để đạt được điều tương tự với TeamCity, nhưng nhanh chóng kết luận nó không có ý nghĩa để làm điều đó. Xây dựng TeamCity của bạn nên dựa trên những gì trong kho chủ của bạn, và như bạn nói, cách thức các mô-đun con GIT hoạt động có nghĩa là nó đến kho lưu trữ chính để cập nhật con trỏ tới cam kết mới trong kho lưu trữ phụ, .

Tóm lại, tôi không muốn TeamCity xây dựng thứ gì đó mà tôi không thể tạo lại từ nguồn, tức là nhân bản kho lưu trữ chính sẽ không phản ánh TeamCity thực sự được xây dựng.

+1

Xin lỗi, không hỏi ý kiến, tôi đang tìm cách giải quyết công việc trong tầm tay. –

+1

Đủ công bằng, nhưng tôi chỉ đang cố xác thực khu vực sự cố. Bạn đã thử thiết lập một VCS gốc thứ hai cho submodule và kích hoạt từ đó? Chỉ là một ý tưởng. – SteveChapman

+0

Tôi đã bỏ ý tưởng đó, vì có thể chỉ có một kích hoạt VCS, nhưng thành thật mà nói tôi đã không kiểm tra xem có nhiều gốc VCS và một trình kích hoạt có thể thực hiện thủ thuật hay không. Tôi làm việc trên đó. –

2

Đây không phải là giải pháp gọn gàng nhưng đạt được mục tiêu để xây dựng dự án với đầu của mô-đun con và không cần cập nhật mô-đun con bằng tay. (Một cái móc có lẽ sẽ làm)

Tạo cấu hình xây dựng riêng biệt với mô-đun con làm repo chính và thiết lập bước xây dựng dòng lệnh để sao chép mô-đun con, lặp/cập nhật và đẩy mô-đun con được cập nhật con trỏ trở lại master-repo.

rm -r master-repo 
git clone [email protected]:xxx/master-repo.git 
cd master-repo 
git status 
git submodule update --init 
git config -f .gitmodules submodule.submodule-repo.branch master 
cd submodule-repo 
git pull origin master 
git status 
cd .. 
git add submodule-repo 
git commit -m "sub module update" 
git push origin master 

Tôi mới sử dụng git để điều này có thể được tối ưu hóa.

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