2010-05-24 34 views
18

Chúng tôi đã có một chi nhánh SVN gần đây đã được sáp nhập trở lại thân cây, và một số công việc nhiều hơn về tính năng/chức năng khu vực là cần thiết. Tôi đề nghị sử dụng cùng một chi nhánh nhưng đã nói với bạn không nên tái sử dụng một chi nhánh một khi nó đã được tích hợp vào thân cây (một tài liệu tham khảo trong tài liệu SVN đã được đưa ra, tôi không thể tìm thấy nó bây giờ). Điều đó cho thấy một chi nhánh khá vô dụng khi bạn hợp nhất trở lại thân cây, do đó, câu hỏi của tôi là một khi chi nhánh không còn cần thiết, nên nó đơn giản bị xóa hoặc lưu giữ?Bạn phải làm gì với các chi nhánh SVN cũ?

Trả lời

17

Khi tôi tích hợp chi nhánh, tôi di chuyển nó từ branches/ đến branches/integrated/. Giữ branches/ sạch sẽ để dễ dàng tìm thấy công việc hiện tại, nhưng cũng giúp dễ dàng đào các nhánh cũ để xem những thay đổi nào đã được thực hiện mà không cần phải thực hiện rất nhiều khảo cổ số khảo sát.

+1

Tôi gọi nó là nhánh-nghĩa trang. –

+1

Tôi đã sử dụng "gác mái". –

+2

Để giải trí cho bản thân mình, tôi cũng sử dụng bình luận về cam kết 'cành cây tỉa cành' –

1

Sau một khoảng thời gian khi dự án kết thúc, tôi xóa các nhánh cũ.

Bạn có thể sử dụng lại tên chi nhánh, nhưng tại sao? Tên có giá rẻ. Đừng gọi chi nhánh của bạn là "làm việc" nhưng hãy cụ thể hơn như "data-conversion-phase-1".

+0

điều gì xảy ra nếu bạn xóa một chi nhánh và sau đó thử tạo một tên khác có cùng tên? trong trường hợp của chúng tôi, chúng tôi đã có một (tôi nghĩ) một tên cụ thể như "chuyển đổi dữ liệu", không biết chúng tôi đã bao giờ có giai đoạn 2! –

+0

Các nhánh (cái cũ bạn đã xóa và nhánh mới bạn tạo cùng tên) là khác biệt và không chia sẻ lịch sử sửa đổi. Chúng chỉ có tên tương tự, nhưng chúng cũng có thể được đặt tên riêng biệt khi bạn nhận được cùng một hiệu ứng. –

+0

Bạn CÓ THỂ sử dụng lại tên chi nhánh. Tôi chỉ cố gắng không. Trong trường hợp của bạn, tôi sẽ làm "chuyển đổi dữ liệu" và sau đó khi tôi thấy rằng giai đoạn hai đã xảy ra, làm cho nó là "data-conversion-phase-2". –

0

Tôi khuyên bạn nên tránh xóa các nhánh cũ trừ khi chúng gây ra sự cố. Nó không thực sự giúp bạn tiết kiệm không gian, và nó giúp bạn dễ dàng xem các phiên bản cũ nếu bạn cần.

Sử dụng lại một nhánh sau khi nó được sáp nhập vào thân cây gần như chắc chắn là một ý tưởng tồi.

+1

yup, tái sử dụng tên chi nhánh giống như sử dụng lại vớ ngày hôm qua – shfx

5

SVN 1.5 đã giới thiệu thuộc tính "mergeinfo", cho phép bạn dễ dàng tích hợp lại các nhánh vào thân cây trong khi hỗ trợ các cập nhật nhánh lặp lại. Điều này cho phép bạn tạo một chi nhánh, cập nhật từng chi nhánh từ thân cây và cuối cùng kết hợp lại nhánh với thân cây (svn merge --reintegrate). Điều này rất hữu ích ví dụ khi bạn tạo một chi nhánh để sửa lỗi hoặc phát triển một chức năng.

Cách mergeinfo được triển khai không cho phép bạn thực hiện tái hòa nhập tiếp theo, vì vậy đây là lý do tại sao bạn được khuyến cáo không sử dụng lại chi nhánh.

Đây là vấn đề đối với "nhánh phát hành" khi bạn muốn phát triển các bản sửa lỗi trên nhánh phát hành và làm tái hòa nhập định kỳ vào thân cây.

Nếu bạn muốn sử dụng một chi nhánh, các mô hình thông thường là để tạo ra một bản sao mới (chi nhánh) có cùng tên:

  1. xóa các chi nhánh
  2. cam
  3. tái tạo chi nhánh (nhánh trong một đường dẫn có cùng tên)
  4. cam
  5. làm việc trên các chi nhánh mới

Khi bạn "tạo lại" nhánh, ở bước 3, thông tin hợp nhất được khôi phục, vì vậy bạn có thể tích hợp lại trong tương lai mà không gặp sự cố.

Quay lại câu hỏi của bạn: "vì vậy câu hỏi của tôi là một khi chi nhánh không còn cần thiết nữa, đơn giản là nó sẽ bị xóa hoặc lưu giữ?" Tôi sẽ giữ chi nhánh, vì vậy nó sẽ được hiển thị trong bản sửa đổi CHÍNH. Việc có các nhánh biến mất gây nhầm lẫn ("này, chúng ta đã tạo ra một nhánh để phát hành 0,1 tuần trước?" "Hmm, tôi không nhớ ... kiểm tra lịch sử repo")

Như để tái sử dụng nhánh, tôi sẽ sử dụng quy ước để không bao giờ sử dụng lại chi nhánh và nếu bạn cần "thêm vào một chi nhánh", hãy tạo lại nó. Nhưng theo ý kiến ​​của tôi thì rõ ràng là sử dụng một tên chi nhánh khác. Bạn có thể sử dụng quy ước đặt tên để xác định các nhánh. Ví dụ: bản gốc sẽ là nhánh/Số phát hành-1 và các nhánh mở rộng tiếp theo/Số phát hành-1.0, nhánh/Số phát hành-1.1, v.v.

Tham chiếu Mergeinfo.

http://blogs.open.collab.net/svn/2008/07/subversion-merg.html http://blogs.open.collab.net/svn/2009/11/where-did-that-mergeinfo-come-from.html

0

Các thực hành tốt, trong khi phát triển một dự án lớn, là đặt tên chi nhánh của mình bằng tên của nhiệm vụ từ các công cụ theo dõi dự án: ví dụ: "DEV-1512", "thư mục nhanh FEAT-512", hoặc bugtracker vé: "BUG-5142", v.v.

Khi tác vụ được hoàn thành, hãy lên và chạy trên máy chủ sản xuất, hãy xóa chi nhánh. Bạn luôn có thể hợp nhất lại.

PS. Hãy tưởng tượng runung svn ls trên $ repo/chi nhánh với 9999 chi nhánh;)

+0

Tôi hoàn toàn có thể thấy lợi ích của việc bao gồm số theo dõi, nhưng tôi cũng có một cái gì đó mô tả. FEAT-132-image-blur-function, chỉ để tránh phải tìm kiếm những con số đó cho các thành viên khác trong nhóm. –

4

From Wikipedia: "Khi một chi nhánh đã được cắt giảm hoặc trong bất kỳ cách nào khác lấy từ nguồn của nó, nó thường được gọi là một cây gậy"

Vì vậy, tôi nghĩ bạn nên tạo một thư mục "gậy" ở cùng mức với các chi nhánh

+1

+1 cho sự thông minh – Kyle

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