Các phương pháp hay nhất của SVN - làm việc theo nhóm


98

Tôi đang bắt đầu với SVN. Tôi biết các lệnh cơ bản và hiểu các nguyên tắc cơ bản. Tôi đã tự hỏi liệu có ai có bất kỳ mẹo hoặc phương pháp hay nhất nào để làm việc với Subversion trong môi trường nhóm không.

Tôi có thể thấy lợi ích của việc thêm các thông báo dài hợp lý khi cam kết mã, nhưng có những điều nào khác mà tôi nên lưu ý không?

Cảm ơn vì tất cả những câu trả lời tuyệt vời - họ đã giúp ích rất nhiều.

Câu trả lời:


76

Khuyến khích cam kết thường xuyên. Các đồng đội mới sử dụng quyền kiểm soát phiên bản có thể cảm thấy như họ cần giữ mã ngoài kho lưu trữ cho đến khi "nó hoạt động bình thường". Hướng dẫn mọi người cam kết sớm và thường xuyên để tìm ra vấn đề càng sớm càng tốt. Thay vì giữ mã 'cho đến khi nó hoạt động, hãy đề xuất đồng đội của bạn tạo các nhánh cho tính năng có thể phá vỡ thân cây. Dẫn đến...

Thiết lập thực hành phân nhánh và gắn thẻ. Ngoài các nhánh cho các tính năng, hãy khuyến khích đồng đội của bạn sử dụng các nhánh để sửa các lỗi lớn. Gắn thẻ các bản sửa lỗi chính vào đầu và cuối tác phẩm. Duy trì các thẻ (và có thể là các chi nhánh) cho các bản phát hành sản xuất / qa.

Thiết lập một chính sách cho thân cây và bám sát nó. Một ví dụ có thể là, "thân cây phải luôn được xây dựng mà không có lỗi." hoặc "thân cây phải luôn vượt qua tất cả các bài kiểm tra đơn vị". Bất kỳ công việc nào chưa thể đáp ứng các tiêu chuẩn của thân cây phải được thực hiện trong một chi nhánh.


1
phân nhánh và sáp nhập là một điều gì đó nhức nhối ở SVN. Các VCS khác xử lý nó tốt hơn nhiều, nhưng tôi sẽ không bao giờ ủng hộ một quy trình chi nhánh cho SVN.
Branan

7
@Branan SAI. đó là do bạn không biết cách sử dụng điều khiển nguồn đúng cách. Khi bạn phân nhánh, bạn được kỳ vọng là một nhà phát triển giỏi thực hiện công việc của mình và CẬP NHẬT chi nhánh của bạn từ trung kế và hợp nhất các thay đổi mới nhất từ ​​trung kế vào chi nhánh của bạn HÀNG NGÀY hoặc vài lần một ngày (lựa chọn của bạn) để cuối cùng bạn không có địa ngục hợp nhất đã chồng chất. Tôi có ít nhất 4-5 chi nhánh luôn hoạt động cục bộ trên PC của mình và nó KHÔNG BAO GIỜ cơn ác mộng này mọi người nói đến vì tôi đang làm đúng ... cập nhật nó thường xuyên để tôi có những thay đổi mà mọi người đang kiểm tra trong thân cây và làm việc và thêm mã liên quan đến
Tích

66

Không cam kết thay đổi định dạng với thay đổi mã

Nếu bạn muốn cấu trúc lại khoảng trắng của một tệp khổng lồ (Control + K+ D), tốt thôi. Cam kết thay đổi định dạng tách biệt với thay đổi logic thực tế. Tương tự nếu bạn muốn di chuyển các chức năng trong tệp. Cam kết việc di chuyển tách biệt với việc chỉnh sửa thực tế.


2
vì vậy tôi chỉnh sửa một tệp cả ngày, và bây giờ đã đến lúc phải cam kết nó, làm cách nào để tách định dạng ra?
Dustin Getz

23
Nếu bạn định thực hiện thay đổi định dạng với mã hiện có, hãy thực hiện trước, cam kết, sau đó thêm mã mới / chỉnh sửa mã. Hoặc thêm / chỉnh sửa trước, cam kết, sau đó thực hiện thay đổi định dạng. Bằng cách này, sự khác biệt trên thêm / chỉnh sửa thực sự có ý nghĩa và không chỉ đơn giản nói rằng "mọi thứ đã khác bây giờ! '.
lc.

1
+1. Những thay đổi không liên quan làm tăng nỗ lực cần thiết để xem xét những thay đổi thích hợp. Cũng làm cho việc hợp nhất / thay đổi cổng trở nên khó khăn hơn (ví dụ, một nhánh khác).
Ates Goral

2
Mặc dù đây là một thực tiễn tốt để làm theo, tôi không nghĩ rằng bất cứ ai sẽ có thể thực thi điều này. Jason nói đúng, rằng một nhà phát triển giỏi sẽ nhận ra rằng họ có thể bỏ qua khoảng trắng bằng một công cụ khác biệt tốt (một công cụ được tích hợp trong Rùa SVN) để lọc nhiễu.
Ken Sykora,

1
Điều này có thể được thực thi thông qua đánh giá mã và giáo dục cho các thành viên trong nhóm. Tôi không nghĩ rằng người đánh giá phải là gánh nặng khi tách các thay đổi hợp lý khỏi các thay đổi mã. Nó phải là trách nhiệm của người thực hiện.
Marquez

43

Một trong những khái niệm chính mà tôi luôn gắn bó là thực hiện các thay đổi mã liên quan cùng nhau . Hệ quả tất yếu là đừng commit những thay đổi mã không liên quan trong cùng một commit . Điều này có nghĩa là không sửa 2 lỗi trong một lần cam kết (trừ khi đó là cùng một bản sửa lỗi) và không sửa một nửa lỗi trong mỗi 2 lần cam kết. Ngoài ra, nếu tôi cần thêm một số cải tiến mới hoặc thứ gì đó vào một phần không liên quan của hệ thống mà sau đó tôi cần cho một số công việc khác, tôi cam kết cải tiến riêng (và trước tiên). Ý tưởng là bất kỳ thay đổi nào mà bất kỳ ai cũng có thể hình dung muốn tự thực hiện (hoặc tự quay trở lại) phải là một cam kết riêng. Nó sẽ giúp bạn đỡ phải đau đầu khi cần hợp nhất hoặc khôi phục các tính năng bị hỏng.


4
+1 cho cái này. Nó có vẻ như là một nỗi đau khi bạn đang cam kết. Nhưng một repo đầy cam kết nguyên tử là vô giá khi bạn đang xem lại mã cũ.
Gordon Wilson

2
Đó không phải là những gì một nhánh tính năng dành cho ... thực hiện càng nhiều cam kết nếu cần, trên nhánh tính năng, sau đó khi bạn đã sẵn sàng hợp nhất nó với thân cây ... việc quay lại chỉ có nghĩa là xóa cam kết đã hợp nhất. +1 để giữ các mã liên quan cùng nhau ...
farinspace

16

Rất nhiều thứ đã được đề cập và đây là một số khác:

  1. Nếu bạn có các tệp mà bạn không muốn trong kiểm soát nguồn (ví dụ: cấu hình, tệp đã biên dịch, v.v.), hãy thêm chúng vào danh sách bỏ qua . Bằng cách này, bạn sẽ nhận thấy bất kỳ tệp nào mà bạn quên thêm vào bằng cách luôn mong đợi một danh sách trống các tệp hiển thị là không xác định cho SVN.

  2. Thêm một sự kiện cam kết đăng sẽ gửi email đến danh sách gửi thư nhà phát triển của bạn (hoặc một sự kiện cụ thể cho mục tiêu này) liên quan đến thay đổi đã cam kết và lý tưởng là bản vá cho nó.

  3. Tích hợp với trình theo dõi lỗi của bạn để các tham chiếu đến cam kết hiển thị trên các yêu cầu về lỗi / tính năng với các liên kết đến các điểm khác biệt. Các trình theo dõi lỗi như MantisBT hỗ trợ điều này.

  4. Cân nhắc tích hợp với tích hợp liên tục (ví dụ: CruiseControl.NET ), NAnt cho Bản dựng và NUnit / VS cho các bài kiểm tra đơn vị. Bằng cách này sau khi người dùng đăng ký mã hoặc trong một khoảng thời gian đã lên lịch, mã được biên dịch, các bài kiểm tra đơn vị được chạy và nhà phát triển nhận được phản hồi về quy trình. Điều này cũng sẽ cảnh báo cho phần còn lại của nhóm nếu kho lưu trữ bị hỏng (tức là không xây dựng).


thực tế chúng tôi sử dụng là tất cả các tệp cấu hình đã thay đổi phần mở rộng như config.php.config hoặc tương tự như vậy, theo cách này, chúng tôi giữ các tệp cấu hình của mình trên máy chủ, nhưng mọi thành viên trong nhóm đều có phần mở rộng của nó. Khi thay đổi một cái gì đó lớn trong tập tin cấu hình hơn chúng ta làm cho bản sao hình thức svn phiên bản ...
Zidane

15

Vâng, những điều cơ bản:

  • Tạo thẻ trước khi bắt đầu QA trên một phiên bản
  • Tạo thẻ trước những thay đổi rủi ro (tức là những nhà tái cấu trúc lớn)
  • Tạo các nhánh cho các phiên bản đã phát hành để đóng băng mã.
  • Đảm bảo rằng mọi người biết cập nhật trước khi bắt đầu công việc trên một đoạn mã và cập nhật lại một lần nữa trước khi thực hiện.
  • SVN cho phép nhiều người dùng khác nhau kiểm tra cùng một tệp. Đảm bảo rằng mọi người giải quyết mọi xung đột có thể xảy ra.
  • Không bao giờ sử dụng cùng một tài khoản SVN cho nhiều người dùng. Những điều khủng khiếp có thể dẫn đến.

7
Tôi làm ngược lại với các nhánh và thẻ của mình. Các nhánh dành cho các ngã ba từ thân cây, cuối cùng chúng được hợp nhất với thân cây. Thẻ dành cho mã đóng băng.
steve_c

1
Các nhánh là những bản sao có thể thay đổi. Thẻ là bản sao KHÔNG nên thay đổi. svnbook.red-bean.com/en/1.2/svn.branchmerge.tags.html
matpie

Tôi làm một điều tương tự. Tôi gắn thẻ và phân nhánh khi tôi phát hành mã cho QA hoặc sản xuất. Bằng cách này, chúng tôi có một điểm đánh dấu chỉ đọc cũng như một nhánh để giải quyết các bản sửa lỗi cho bản phát hành đó sẽ không ảnh hưởng đến sự phát triển tính năng mới có thể diễn ra trên thân cây.
JamesEggers

Svn cũng cho phép nhiều lần kiểm tra cùng một thư mục cho cùng một người dùng. Vì vậy, nếu bạn thấy rằng bạn cần thực hiện một thay đổi không liên quan đến công việc hiện tại của bạn (tức là một số khách hàng đang gọi yêu cầu sửa chữa khẩn cấp hoặc bạn tình cờ tìm thấy một lỗi hoàn toàn không liên quan), hãy kiểm tra lại và sửa nó riêng.
PMF

"thẻ" nên được sử dụng để đóng băng mã. Nếu bạn cố gắng thay đổi nhánh "thẻ", ứng dụng khách SVN của bạn thậm chí còn cảnh báo bạn.
Danijel

12

Những câu trả lời mà mọi người đang đưa ra rất tuyệt vời. Phần lớn nội dung này được tóm tắt trong tài liệu người dùng svn để biết các phương pháp hay nhất cho SVN .
Lặp lại:

  1. Thiết lập cấu trúc kho lưu trữ của bạn (bạn nên có gốc dự án với thân, nhánh và thẻ bên dưới)
  2. Chọn phân nhánh lại chính sách của bạn (chi nhánh riêng, chi nhánh theo cột mốc / phát hành / lỗi, v.v.) và tuân theo nó - tôi khuyên bạn nên phân nhánh nhiều hơn thay vì ít hơn, nhưng không cần chi nhánh riêng
  3. Chọn lại chính sách gắn thẻ của bạn - càng nhiều thẻ càng tốt, nhưng quan trọng nhất là quyết định quy ước đặt tên thẻ của bạn
  4. Chọn chính sách của bạn cam kết với thân cây - giữ cho thân cây càng "sạch" càng tốt, nó sẽ có thể phát hành bất cứ lúc nào

Đó là một phương pháp hay nhất khá cũ, vì vậy tôi không nghĩ rằng CollabNet đề xuất chúng nữa. Có phương pháp hay nhất mới nào không? Một trong những bạn đã đề cập quay trở lại SVN 1.0
mliebelt

1
@mliebelt - Tôi đã cập nhật liên kết lên phiên bản apache. Bất kể tuổi tác, những ý tưởng về việc chọn cấu trúc repo, chính sách phân nhánh, chính sách gắn thẻ và chính sách cam kết thân cây của bạn, cùng với những câu trả lời thực sự tốt ở trên, vẫn rất tốt.
hromanko

Mặc dù vậy, mô tả về "Hệ thống chi nhánh khi cần thiết" là khá tệ. Nghe giống như một công thức cho một buổi chụp hình văn phòng.
naught101

10

Tôi muốn tóm tắt các phương pháp hay nhất mà tôi tuân thủ:

  1. Không cam kết mã nhị phân . Nên có kho lưu trữ riêng cho các tệp nhị phân, chẳng hạn như Nexus , Ivy hoặc Artifactory .
  2. Cần có cấu trúc kho lưu trữ . Cá nhân tôi sử dụng cấu trúc kho lưu trữ sau:

    /trunk
    /tags
        /builds
            /PA
            /A
            /B
        /releases
            /AR
            /BR
            /RC
            /ST
    /branches
        /experimental
        /maintenance
            /versions
            /platforms
        /releases
    
  3. Sử dụng danh sách cụ thể của các loại chi nhánh . Danh sách của tôi là sau: thử nghiệm , bảo trì , phiên bản , nền tảng , bản phát hành .
  4. Sử dụng các loại thẻ cụ thể : PA(pre-alpha), A(alpha), B(beta), AR(alpha-release), BR(beta-release), RC(phát hành ứng viên), ST(ổn định).
  5. Giảm thiểu sự cần thiết của việc hợp nhất . Cần có các quy tắc khi có thể / khuyến khích hợp nhất và khi nào thì không.
  6. Đánh số phiên bản . Cần có cách tiếp cận đánh số phiên bản được thiết lập để tuân theo. Thông thường, nó được mô tả trong tài liệu như Kế hoạch quản lý cấu hình phần mềm, nó là một phần của tài liệu dự án cấp cao. Cá nhân tôi sử dụng phương pháp đánh số phiên bản phức tạp. : Theo phương pháp này, các phiên bản đã mẫu sau Nxx (chi nhánh bảo trì / hỗ trợ), NMX (chi nhánh phát hành), NxK (xây dựng), NMK (phát hành).
  7. Cam kết càng thường xuyên càng tốt . Nếu nó có xu hướng khó khăn (ví dụ: khi cần thực hiện quá nhiều thay đổi để triển khai tính năng và thậm chí biên dịch mã), thì nên sử dụng các nhánh thử nghiệm.
  8. Thân cây phải chứa sự phát triển mới nhất . Ví dụ, khi có sự lựa chọn để phát triển phiên bản chính mới ( Nxx ) của ứng dụng, trong đường trục hoặc trong nhánh, phải luôn đưa ra quyết định có lợi cho đường trục . Phiên bản cũ nên được phân nhánh thành nhánh bảo trì / hỗ trợ . Nó giả định rằng có sự phân biệt rõ ràng giữa các phiên bản chính và các chi tiết cụ thể của chúng (kiến trúc, khả năng tương thích) xuất hiện càng sớm càng tốt .
  9. Chính sách nghiêm ngặt 'không phá vỡ xây dựng' về phát hành chi nhánh . Trong khi đó, không nhất thiết phải nghiêm ngặt đối với thân cây miễn là nó có thể có sự phát triển thử nghiệm hoặc cơ sở mã cần giải quyết các vấn đề hợp nhất.
  10. Sử dụng svn: externals . Nó sẽ cho phép mô-đun hóa dự án của bạn, thiết lập quy trình quản lý phát hành minh bạch, phân chia và chinh phục các chức năng khác nhau.
  11. Sử dụng theo dõi vấn đề . Bạn sẽ có thể chỉ ra tham chiếu vấn đề bên trong thông báo cam kết.
  12. Tắt thông báo cam kết trống . Nó có thể được thực hiện bằng cách sử dụng móc cam kết trước.
  13. Xác định các nhánh bạn muốn tích hợp liên tục . Ví dụ: tôi thích sử dụng tích hợp liên tục cho trung kế , bảo trìphát hành các chi nhánh.
  14. Thiết lập chính sách tích hợp liên tục cho các loại chi nhánh. Như tôi đã chỉ ra trước đó, hầu hết các quy tắc nghiêm ngặt "không phá vỡ cấu trúc" áp dụng cho việc giải phóng các nhánh, trong khi các nhánh thân và nhánh bảo dưỡng đôi khi có thể bị gãy. Ngoài ra, có sự khác biệt giữa danh sách kiểm tra chạy trên đường trục / chi nhánh bảo trìphát hành .

Bạn có thể tìm thấy phác thảo về các phương pháp hay nhất về lật đổ của tôi dưới dạng sơ đồ minh họa các nguyên tắc chính của phương pháp quản lý cấu hình phần mềm mà tôi sử dụng.


Vậy bạn có làm việc theo nhóm không? Những người khác nhau có sử dụng các nhánh khác nhau không? Làm thế nào để tránh xung đột? Câu trả lời của bạn không bao hàm tinh thần đồng đội :(
DataGreed

2
Q: Làm thế nào để tránh xung đột? A: Giảm thiểu sự cần thiết của việc hợp nhất , Trunk nên chứa sự phát triển mới nhất , Cam kết thường xuyên nhất có thể Q: Những người khác nhau có sử dụng các nhánh khác nhau không? A: Mỗi nhánh có thể được sử dụng bởi một hoặc nhiều người. Điều quan trọng nữa là phân biệt các loại nhánh: thử nghiệm, bảo trì và phát hành, nó giúp tránh xung đột Q: Câu trả lời của bạn không bao hàm tinh thần đồng đội A: Có thể thấy ngay từ cái nhìn đầu tiên. Sử dụng kiểm soát phiên bản tự động có nghĩa là làm việc theo nhóm. Tôi đã mô tả bộ quy tắc (như quy tắc của con đường) giúp cộng tác hiệu quả hơn nữa
altern

7

Một điều tôi thấy rất hữu ích là thuộc tính svn: external có nghĩa là bạn có thể tham chiếu các thư mục từ các kho khác thành của riêng bạn. Nó cung cấp những cách thực sự tốt để tổ chức mã và dữ liệu của bạn. Một số ví dụ:

  1. Nếu bạn có một kho lưu trữ riêng để viết mã các mô-đun / thư viện khác nhau và tham chiếu trong các kho bạn đang sử dụng. Điều này có nghĩa là bạn có thể có một kho lưu trữ meta cho mọi tệp thực thi. Nếu đó là một tệp thực thi nhỏ chỉ sử dụng một vài mô-đun, bạn sẽ không cần phải kiểm tra toàn bộ cây. Một tác dụng của việc này là bạn nhận được số sửa đổi SVN trên mỗi mô-đun.
  2. Thêm dữ liệu nhị phân lớn như các phiên bản đã biên dịch của thư viện vào kho lưu trữ mã thường được coi là một thói quen xấu, nhưng nó có thể thực sự tiện lợi. Nếu bạn chỉ cần thêm tất cả các phiên bản của tất cả các thư viện bạn sử dụng vào một kho lưu trữ khác, bạn có thể tận dụng tối đa hai thế giới. Bạn tham khảo các phiên bản của thư viện mà bạn sử dụng vào kho mã của mình. Khi kiểm tra kho lưu trữ mã của bạn, bạn cũng sẽ nhận được cả mã và mã nhị phân. Tuy nhiên, các tệp nhị phân được lưu trữ trong một kho lưu trữ lớn mà bạn không cần phải sao lưu nghiêm ngặt như mã nguồn của mình và kho lưu trữ mã nguồn vẫn nhỏ và chỉ chứa văn bản.

1
Tôi thích điểm 2. Vì bạn có thể chỉ định số sửa đổi hoặc không khi sử dụng svn: external, điều này sẽ cho phép bạn "ghim" một số thư viện vào các phiên bản cụ thể trong khi cho phép những người khác "theo dõi" phiên bản mới nhất.
j_random_hacker 22/09/09

Sử dụng "svn: external" s là một trong những cách mạnh mẽ nhất và tôi muốn nói hầu hết các tính năng cơ bản của SVN. Đó là điều bắt buộc.
Danijel

5

Sử dụng tích hợp với phần mềm theo dõi lỗi của bạn. Nếu bạn sử dụng Bugzilla , bạn có thể thiết lập nó để nếu nhận xét của bạn bắt đầu bằng "Lỗi XXXX", nhận xét SVN của bạn sẽ tự động được thêm vào dưới dạng nhận xét cho lỗi đã cho, bao gồm một liên kết đến giao diện web SVN của bạn tới bản sửa đổi đó.


Trac có tích hợp svn tốt để theo dõi lỗi, cộng với dòng thời gian, cam kết khác biệt, wiki, v.v.
Doug Currie

Jira cũng theo dõi các cam kết liên quan đến các vấn đề
Dan Xà phòng

4

Tìm hiểu về các công cụ và quy ước phân nhánh và hợp nhất của SVN.

Cách tốt nhất để làm việc với các thành viên khác trong nhóm là chia nhỏ công việc thành các bản sửa lỗi / tính năng phát triển hoàn chỉnh, sau đó thực hiện các thay đổi riêng lẻ, mỗi người trong một nhánh. Sau đó hợp nhất các thay đổi trở lại chi nhánh / đường trục chính khi hoàn thành / sẵn sàng / được chấp thuận để được hợp nhất.

Bằng cách này, các cá nhân có thể hướng tới một mục tiêu chung (trên cùng một nhánh hoặc các nhánh riêng biệt) mà không bị ảnh hưởng bởi những thay đổi khác.

Số dặm của bạn có thể thay đổi và điều này có thể quá mức cần thiết đối với chỉ hai người hoặc lâu hơn.


3

Nó sẽ dễ dàng hơn nhiều nếu bạn đang sử dụng các công cụ tốt tích hợp tốt với SVN. Những điều này giúp bạn dễ dàng xem những gì đã được thay đổi và sau đó cam kết tất cả hoặc một phần các thay đổi của bạn và thường xuyên cập nhật bản sao làm việc của bạn lên phiên bản mới nhất trong SVN.

Tôi đề xuất Tortoise SVN (Nếu bạn đang sử dụng Windows) và Visual SVN (nếu bạn đang sử dụng VS).

Ngoài ra, hãy xem liệu bạn có thể thiết lập nó để bạn nhận được e-mail hoặc thông báo tương tự bất cứ khi nào có thay đổi được cam kết hay không (thường cũng bao gồm thông báo cam kết và danh sách các tệp đã thay đổi). Các dịch vụ như CVSDude cung cấp điều này. Tôi thấy hữu ích khi biết cả bản cập nhật đã được thực hiện và sau đó có một số ý tưởng về những gì có trong bản cập nhật đó trước khi cập nhật bản sao làm việc của tôi.


3

Bên cạnh các chính sách phân nhánh et al. (trong đó một kích thước chắc chắn không phù hợp với tất cả), bạn nên có cam kết tốt:

  • Các cam kết liên quan đến một đơn phần của công việc nếu có thể; một bản sửa lỗi, một tính năng mới- nên có một số 'logic' đối với những thay đổi bạn đã cam kết
  • Cam kết phải có một nhận xét mô tả sẽ giúp bạn xác định vị trí nó duyệt qua lịch sử kho lưu trữ. Hầu hết mọi người đề nghị viết một câu ở đầu mô tả toàn bộ cam kết và một tài khoản chi tiết hơn bên dưới
  • Nếu có thể, bạn nên gắn cam kết với hệ thống theo dõi lỗi của mình nếu có thể. Trac, Redmine và cộng sự. cho phép bạn tạo liên kết từ lỗi đến cam kết và ngược lại, điều này rất hữu ích.


2

Tham khảo ý kiến ​​với nhóm của bạn về các thay đổi của họ hoặc ít nhất là xem xét sự khác biệt rất cẩn thận, trước khi khắc phục bất kỳ xung đột hợp nhất nào. Yêu cầu họ tự xem lại mã đã hợp nhất để đảm bảo rằng phần bổ sung của họ không bị mất trong quá trình hợp nhất.


2

Một điều mà tôi đã thấy rằng làm giảm các cam kết bị hỏng là có các tập lệnh pre-commit tốt. Ví dụ: bạn có thể chạy bất kỳ bài kiểm tra đơn vị nào trước khi thay đổi được cam kết. Điều này sẽ khiến việc cam kết bị chậm lại một chút, nhưng bạn tiết kiệm thời gian bằng cách tránh dẫm lên chân người khác và phải xin lỗi. Tất nhiên điều này sẽ trở nên khó quản lý hơn rất nhiều khi bạn có một nhóm phát triển lớn và cam kết rất thường xuyên.


+1 cho các tập lệnh cam kết trước. Ý tưởng tuyệt vời. Tôi tự hỏi liệu có cách nào để lấy git cho bạn một cú đập tay nếu bạn thử cam kết mà không chạy nó không?
naught101

2

Một trong những ví dụ về tích hợp với trình theo dõi lỗi và thực thi chính sách cam kết có thể là tập lệnh hook trước / sau cam kết của Trac 's svn, có thể từ chối cam kết nếu thông báo cam kết không tham chiếu đến bất kỳ vé nào trong trình theo dõi lỗi và thêm nhận xét vào hiện có vé dựa trên nội dung tin nhắn (tức là tin nhắn cam kết có thể chứa những thứ như "Bản sửa lỗi # 1, # 2 và # 8", trong đó # 1, # 2, # 8 là số vé).


2

Phương pháp hay nhất để sử dụng SVN :

  1. Khi lần đầu tiên bạn đến văn phòng và mở dự án Eclipse của mình , bước đầu tiên phải thực hiện là cập nhật dự án của bạn.

  2. Sau khi cập nhật, hãy bắt đầu công việc của bạn. Khi bạn hoàn thành quá trình viết mã của mình, hãy kiểm tra xem ứng dụng của bạn có chạy đúng cách hay không mà không có bất kỳ ngoại lệ nào. Một khi bạn chắc chắn rằng mã của mình đang hoạt động tốt, đã đến lúc bạn cần xác nhận mã.

Lưu ý: Trong khi cam kết mã, không cam kết trực tiếp. Thực hiện đồng bộ hóa với máy chủ và kiểm tra tất cả những gì cần được cam kết. Lưu ý: Không cam kết toàn bộ thư mục một lần. Bởi vì bạn có thể đã thực hiện một số thay đổi đối với tệp theo yêu cầu của mình hoặc bạn có thể đã xóa một số tệp trong hệ thống cục bộ của mình. Nhưng các cài đặt khác nhau trên máy chủ. Vì vậy, hãy kiểm tra các tệp riêng lẻ và cam kết mã.

  1. Không cam kết / cập nhật trực tiếp các tệp xung đột.

  2. Khi nào cần ghi đè và cập nhật?

    Khi bạn chắc chắn rằng bạn không cần bất kỳ thay đổi cục bộ nào và muốn cập nhật toàn bộ bản sao máy chủ. Lưu ý rằng một khi nếu bạn thực hiện ghi đè và cập nhật, bạn sẽ không nhận được bất kỳ thay đổi cục bộ nào của mình.

    Lưu ý: Đừng giữ dự án mà không cập nhật trong hơn một ngày. Cũng đừng giữ mã mà không cam kết trong nhiều ngày.

  3. Giao tiếp với những người đang làm việc trong cùng một bộ phận và thảo luận về những thay đổi họ đã thực hiện hàng ngày.

  4. Không cam kết các thuộc tính và tệp cấu hình trừ khi có lý do nào đó. Vì cài đặt sẽ khác nhau trên máy chủ và trên đám mây.

  5. Không đưa các thư mục đích vào SVN, chỉ mã nguồn và các thư mục tài nguyên phải được duy trì trong kho lưu trữ SVN.

  6. Khi bạn bị mất mã, đừng hoảng sợ! Bạn có thể lấy lại bản sao trước đó từ lịch sử SVN.

  7. Đừng kiểm tra dự án vào nhiều nơi trên đĩa của bạn. Kiểm tra nó ở một vị trí và làm việc với nó.



1

Bản thân SVN là một khởi đầu tốt và một số áp phích khác đã đưa ra một số gợi ý tuyệt vời về các phương pháp hay nhất.

Điều duy nhất tôi muốn nói thêm là bạn nên kết nối SVN với CruiseControl hoặc TeamCity để thúc đẩy quá trình Tích hợp liên tục. Thao tác này sẽ gửi email bản dựng và cho mọi người biết khi ai đó đã phá bản dựng.

Nó sẽ sớm cho biết ai đang theo dõi quy trình của bạn và ai không. Có thể dẫn đến một số xích mích nhưng nhóm của bạn sẽ tốt hơn về lâu dài.


1
đồng ý, CruiseControl đã cứu nhóm của tôi rất nhiều lần.
Gordon Wilson,

1
  • Nhận xét chính xác cho mọi cam kết

  • Đừng phá vỡ cấu trúc (dòng chính)!

  • Cam kết ngay sau khi một đơn vị logic thay đổi

  • Tránh sử dụng Subversion làm công cụ sao lưu

  • Phân nhánh / hợp nhất một chút càng tốt

.

Có thể tìm thấy thêm chi tiết trong các phương pháp hay nhất của SVN .


0

DEV có hoạt động trên các Chi nhánh không

  1. Cam kết thường xuyên với chi nhánh của bạn
  2. Các cam kết rời rạc / Mô-đun đối với chi nhánh của bạn ( xem tại đây )
  3. Cập nhật / Hợp nhất từ ​​thân cây thường xuyên. Đừng ngồi trên chi nhánh của bạn mà không căn cứ lại

Thân cây cộng đồng

  1. Nên luôn xây dựng / làm việc
  2. Một vấn đề cho mỗi lần cam kết ( xem lại tại đây ) Chủ yếu là để bạn hoặc những người khác có thể khắc phục sự cố từng lần một
  3. Đừng kết hợp các thay đổi cấu trúc lại / khoảng trắng với các thay đổi hợp lý. Đồng đội của bạn sẽ gặp khó khăn khi trích xuất những gì bạn thực sự đã làm từ một cam kết

Hãy nhớ rằng bạn thực hiện cam kết càng gia tăng, theo mô-đun, rời rạc và ngắn gọn, bạn (hoặc có thể là những người khác) càng dễ dàng:

  • Tăng dần các thay đổi
  • Trực quan nhận ra những gì bạn thực sự đã làm mà không cần sàng lọc qua hàng tấn khoảng trắng và các thay đổi tên biến.
  • Thông báo cam kết có ý nghĩa nhiều hơn khi tỷ lệ công việc đã hoàn thành trên độ dài thông báo thấp hơn.

0

Sử dụng cái này cho mẫu nhận xét:

[nhiệm vụ / câu chuyện xxx] [nhỏ / lớn] [bình luận] [theo dõi bình luận] [URL đến lỗi]

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.