2013-03-21 23 views
19

Vì vậy, người dùng SVN lâu năm, nhưng khá thiếu kinh nghiệm về phân nhánh/gắn thẻ và khi tôi nghi ngờ tôi không thực sự sử dụng nó một cách chính xác hoặc tiềm năng đầy đủ của nó.Chiến lược SVN bằng cách sử dụng các nhánh và kết hợp các thay đổi từ thân cây thành chi nhánh

Tôi có thân cây mà tôi làm việc để thêm các tính năng mới vv. Cơ sở mã này được sử dụng trong nhiều trang web, nơi chúng tôi tạo chi nhánh ra khỏi thân cây trên cơ sở từng dự án.

Mỗi chi nhánh thường có các sửa đổi cụ thể cho dự án đó và mọi thứ chúng tôi cho là có thể sử dụng lại được thêm vào thân cây và được thực hiện để tính năng này có thể được bật và tắt trên các dự án khác nhau.

Hiện tại khi chúng tôi thực hiện thay đổi đối với thân cây và muốn những sửa đổi đó trong chi nhánh đã được đặt trước, tôi phải thực hiện và hợp nhất các sửa đổi nhất định vào chi nhánh và giới thiệu chúng. Không lý tưởng, và dễ dàng bỏ lỡ công cụ.

Vì vậy, câu hỏi của tôi ... là có cách nào để cập nhật chi nhánh của tôi với TẤT CẢ các thay đổi từ thân cây và xử lý chúng như thể nó là bản cập nhật thân cây tiêu chuẩn có xung đột không?

Tôi đã thấy về việc tái hòa nhập nhánh vào thân cây, nhưng do cách tôi đang sử dụng các nhánh trong trường hợp này, đó không thực sự là điều tôi muốn làm.

+0

Bạn có sử dụng svn từ dòng lệnh hoặc bạn có sử dụng gui như TortoiseSVN không? –

+5

Vì vậy, tôi đã là một người dùng SVN cho khá nhiều miễn là nó được xung quanh. Và mặc dù bạn có thể chiến đấu với SVN để làm cho nó làm một số điều bạn muốn, tôi phải trung thực: git là tốt hơn nhiều ở đây. Nó được thiết kế xung quanh chính xác những gì bạn đang nói về (nhưng nghĩ rằng "thậm chí nhiều chi nhánh"). Nếu bạn muốn làm rất nhiều chi nhánh sáp nhập và theo dõi của sự vật, tôi muốn chuyển đổi repo SVN của bạn để một repo git và đi từ đó. Bạn sẽ hạnh phúc hơn (Tôi biết tôi tự tin hơn khi biết các bản vá của mình được áp dụng ở mọi nơi sau khi chuyển đổi dự án SVN 10 năm thành git) –

+0

Tôi sử dụng kết hợp smartsvn (có thể nhiều hơn thế), và dòng lệnh – Horse

Trả lời

22

Có thể thực hiện được. Về cơ bản, bạn cần phải chạy svn merge từ một bản sao làm việc sạch của chi nhánh của bạn (một không có thay đổi địa phương):

$ pwd 
/home/user/mybranch 
$ svn status # Does not display anything 
$ svn update # Make sure your local copy is up to date. 
Updating '.': 
At revision X. 
$ svn merge url/to/repository/trunk 
Updates, additions, deletions and conflicts. 
$ #handle conflicts. 
$ svn commit -m "Merging changes from the trunk". 

Xem Keeping a Branch in Sync từ cuốn sách SVN.

Hợp nhất đầu tiên có khả năng giới thiệu nhiều xung đột, đặc biệt là nếu nhánh bị chia cắt trong một thời gian dài trước đây, nhưng việc hợp nhất sau sẽ diễn ra suôn sẻ, đặc biệt nếu bạn hợp nhất thường xuyên.

+0

hoạt động hoàn hảo !! cảm ơn – gnuyoga

+0

Tôi đã làm điều đó và sau đó, khi tôi cố gắng cập nhật thân cây từ brach, tất cả các lớp mới được cập nhật từ xe tải đều xung đột. Tôi đã làm gì sai sao? Hay làm điều đó phải xảy ra theo cách này? – Sertage

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