Câu hỏi Làm thế nào để sử dụng SVN, Chi nhánh? Nhãn? Thân cây?


Tôi đã googling xung quanh một chút và không thể tìm thấy một hướng dẫn "mới bắt đầu" tốt để SVN, không phải trong ý nghĩa của "làm thế nào để tôi sử dụng các lệnh" thay vì; Làm cách nào để kiểm soát mã nguồn của tôi?

Những gì tôi muốn làm sáng tỏ là các chủ đề sau:

  • Bạn cam kết bao lâu? Thường xuyên như một người sẽ nhấn Ctrl + S?
  • Chi nhánh là gì và Thẻ là gì và bạn kiểm soát chúng như thế nào?
  • Những gì đi vào SVN? Chỉ có Mã nguồn hoặc bạn có chia sẻ các tệp khác ở đây không? (Không được coi là tệp đã được phiên bản ..)

Tôi không có ý tưởng gì về chi nhánh và thẻ là vì vậy tôi không biết mục đích, nhưng phỏng đoán hoang dã của tôi là bạn tải nội dung lên thân cây và khi bạn xây dựng chính bạn di chuyển nó đến chi nhánh? Vì vậy, những gì được coi là một xây dựng lớn trong trường hợp này?


163
2018-01-21 08:17


gốc


Một cách tốt để xác định một 'tần số' cam kết là đi vào nó từ một quan điểm hợp nhất. Nếu bạn có một chi nhánh bạn cần để kết hợp các thay đổi từ thân cây vào, chọn qua một số phiên bản của Vs 1000 sớm sẽ giúp bạn kết thúc ở một cách tiếp cận hợp lý. - Phil Cooper


Các câu trả lời:


Các sách lật đổ là một nguồn thông tin tuyệt vời về các chiến lược để đặt kho, phân nhánh và gắn thẻ của bạn.

Xem thêm:

Bạn có tiếp tục phát triển trong một chi nhánh hoặc trong thân cây không

Chiến lược phân nhánh


59
2018-01-21 08:22



Đặc biệt nhìn vào: svnbook.red-bean.com/en/1.5/… - morechilli


Tôi đã tự hỏi mình cùng một câu hỏi khi chúng tôi đến triển khai Subversion ở đây - khoảng 20 nhà phát triển trải rộng trên 4 - 6 dự án. Tôi đã không tìm thấy bất kỳ một nguồn tốt với '' câu trả lời ''. Dưới đây là một số phần về cách câu trả lời của chúng tôi đã phát triển trong 3 năm qua:

- cam kết thường xuyên như là hữu ích; quy tắc ngón tay cái của chúng tôi là cam kết bất cứ khi nào bạn đã thực hiện đủ công việc rằng nó sẽ là một vấn đề phải làm lại nó nếu các sửa đổi bị mất; đôi khi tôi cam kết mỗi 15 phút hoặc lâu hơn, những lần khác có thể là ngày (có, đôi khi phải mất một ngày để tôi viết 1 dòng mã)

- chúng tôi sử dụng các chi nhánh, như một trong những câu trả lời trước đây của bạn được đề xuất, cho các đường phát triển khác nhau; ngay bây giờ cho một trong các chương trình của chúng tôi, chúng tôi có 3 chi nhánh hoạt động: 1 cho phát triển chính, 1 cho nỗ lực chưa hoàn thành để song song chương trình và 1 cho nỗ lực sửa đổi nó để sử dụng các tệp đầu vào và đầu ra XML;

- chúng tôi hiếm khi sử dụng thẻ, mặc dù chúng tôi nghĩ rằng chúng tôi nên sử dụng chúng để xác định bản phát hành cho sản xuất;

Hãy suy nghĩ về tiến trình phát triển dọc theo một con đường duy nhất. Tại một thời điểm hoặc trạng thái phát triển tiếp thị quyết định phát hành phiên bản đầu tiên của sản phẩm, vì vậy bạn trồng một lá cờ trong đường dẫn có nhãn '1' (hoặc '1.0' hoặc những gì có bạn). Vào thời điểm nào đó, một số tia lửa sáng quyết định song song chương trình, nhưng quyết định rằng sẽ mất vài tuần và mọi người muốn tiếp tục đi xuống con đường chính trong thời gian chờ đợi. Vì vậy, bạn xây dựng một ngã ba trong con đường và những người khác nhau đi lang thang xuống các nhánh khác nhau.

Những lá cờ trên đường được gọi là 'thẻ', và các nhánh trên đường là nơi 'cành' chia. Thỉnh thoảng, các chi nhánh cũng trở lại với nhau.

- chúng tôi đặt tất cả các tài liệu cần thiết để xây dựng một tệp thực thi (hoặc hệ thống) vào kho lưu trữ; Điều đó có nghĩa là ít nhất mã nguồn và tạo tệp (hoặc tệp dự án cho Visual Studio). Nhưng khi chúng tôi có các biểu tượng và tập tin cấu hình và tất cả những thứ khác, mà đi vào kho lưu trữ. Một số tài liệu tìm đường vào repo; chắc chắn bất kỳ tài liệu nào chẳng hạn như các tệp trợ giúp có thể không thể tách rời với chương trình, và đó là một nơi hữu ích để đặt tài liệu dành cho nhà phát triển.

Chúng tôi thậm chí còn đưa các tệp thực thi Windows vào bản phát hành sản phẩm của chúng tôi ở đó, để cung cấp một vị trí duy nhất cho những người tìm kiếm phần mềm - bản phát hành Linux của chúng tôi đi tới máy chủ, do đó không cần lưu trữ.

- chúng tôi không yêu cầu kho lưu trữ tại mọi thời điểm có khả năng cung cấp phiên bản mới nhất tạo và thực thi; một số dự án hoạt động theo cách đó, một số dự án thì không; quyết định thuộc về người quản lý dự án và phụ thuộc vào nhiều yếu tố nhưng tôi nghĩ rằng nó bị phá vỡ khi thực hiện những thay đổi lớn cho một chương trình.


86
2018-01-21 08:39





* How often do you commit? As often as one would press ctrl + s?

Thường xuyên nhất có thể. Mã không tồn tại trừ khi nó nằm dưới sự kiểm soát nguồn :)

Các cam kết thường xuyên (sau đó là các bộ thay đổi nhỏ hơn) cho phép bạn tích hợp các thay đổi của mình một cách dễ dàng và tăng cơ hội không phá vỡ một cái gì đó.

Những người khác lưu ý rằng bạn nên cam kết khi bạn có một đoạn mã chức năng, tuy nhiên tôi thấy hữu ích khi cam kết thường xuyên hơn một chút. Một vài lần tôi nhận thấy rằng tôi sử dụng kiểm soát nguồn như một cơ chế hoàn tác / làm lại nhanh.

Khi tôi làm việc trên chi nhánh của riêng tôi, tôi muốn cam kết càng nhiều càng tốt (nghĩa là thường xuyên như tôi nhấn ctrl + s).

* What is a Branch and what is a Tag and how do you control them?

Đọc Sách SVN - đó là nơi bạn nên bắt đầu khi học SVN:

* What goes into the SVN?

Tài liệu, các tệp nhị phân nhỏ cần thiết để xây dựng và các công cụ khác có giá trị nào đó đi đến kiểm soát nguồn.


18
2018-01-21 08:25





Dưới đây là một số tài nguyên về tần suất cam kết, cam kết thông điệp, cấu trúc dự án, những gì cần đặt dưới sự kiểm soát nguồn và các nguyên tắc chung khác:

Các câu hỏi về Stack Overflow này cũng chứa một số thông tin hữu ích mà bạn có thể quan tâm:

Về các khái niệm Subversion cơ bản như phân nhánh và gắn thẻ, tôi nghĩ điều này được giải thích rất rõ sách Subversion.

Như bạn có thể nhận ra sau khi đọc thêm một chút về chủ đề này, ý kiến ​​của mọi người về những gì thực hành tốt nhất trong lĩnh vực này thường thay đổi và đôi khi xung đột. Tôi nghĩ rằng lựa chọn tốt nhất cho bạn là để đọc về những gì người khác đang làm và chọn các hướng dẫn và thực hành mà bạn cảm thấy có ý nghĩa nhất đối với bạn.

Tôi không nghĩ rằng bạn nên áp dụng một thực hành nếu bạn không hiểu mục đích của nó hoặc không đồng ý với lý do đằng sau nó. Vì vậy, không nên làm theo bất kỳ lời khuyên nào một cách mù quáng, nhưng thay vào đó hãy tạo nên suy nghĩ của riêng bạn về những gì bạn nghĩ sẽ làm việc tốt nhất cho bạn. Ngoài ra, thử nghiệm với các cách khác nhau để làm việc là một cách tốt để tìm hiểu và tìm hiểu cách bạn thích làm việc tốt nhất. Một ví dụ tốt về điều này là cách bạn cấu trúc kho lưu trữ. Không có cách nào đúng hay sai để làm điều đó, và thường rất khó để biết bạn thích cách nào hơn cho đến khi bạn thực sự thử chúng trong thực tế.


11
2018-01-21 10:23





Cam kết tần số phụ thuộc vào phong cách quản lý dự án của bạn. Nhiều người không cam kết nếu nó sẽ phá vỡ bản dựng (hoặc chức năng).

Các nhánh có thể được sử dụng theo một trong hai cách, thường là: 1) Một nhánh đang hoạt động để phát triển (và thân cây vẫn ổn định), hoặc 2) nhánh cho các đường dẫn dev thay thế.

Thẻ thường được sử dụng để xác định bản phát hành, vì vậy chúng không bị mất trong danh sách kết hợp. Định nghĩa về 'phát hành' tùy thuộc vào bạn.


8
2018-01-21 08:20



Đồng ý: cam kết miễn là bạn không phá vỡ công trình! - Brandon Montgomery


Tôi nghĩ rằng vấn đề chính là hình ảnh tinh thần của kiểm soát nguồn bị nhầm lẫn. Chúng tôi thường có thân cây và các chi nhánh, nhưng sau đó chúng tôi nhận được ý tưởng không liên quan của thẻ / bản phát hành hoặc một cái gì đó ảnh hưởng đến điều đó.

Nếu bạn sử dụng ý tưởng về một cái cây hoàn toàn thì nó trở nên rõ ràng hơn, ít nhất là với tôi nó.

Chúng tôi nhận được các thân cây -> hình thức chi nhánh -> sản xuất trái cây (thẻ / phát hành).

Ý tưởng là bạn phát triển dự án từ một thân cây, sau đó tạo ra các nhánh khi thân cây đủ ổn định để giữ nhánh cây. Sau đó, khi chi nhánh đã tạo ra một loại trái cây, bạn nhổ nó ra khỏi cành và nhả nó thành một thẻ.

Tags về cơ bản là phân phôi. Trong khi thân cây và cành tạo ra chúng.


6
2017-09-11 07:04





Như những người khác đã nói, Sách SVN là nơi tốt nhất để bắt đầu và tham khảo tuyệt vời khi bạn đã nhận được chân biển của mình. Bây giờ, cho câu hỏi của bạn ...

Bạn cam kết bao lâu? Thường thì người ta sẽ nhấn ctrl + s?

Thông thường, nhưng không thường xuyên khi bạn nhấn ctrl + s. Đó là vấn đề về sở thích cá nhân và / hoặc chính sách nhóm. Cá nhân tôi sẽ nói cam kết khi bạn hoàn thành một đoạn mã chức năng, tuy nhiên nhỏ.

Chi nhánh là gì và Thẻ là gì và bạn kiểm soát chúng như thế nào?

Đầu tiên, thân cây là nơi bạn phát triển tích cực. Đây là dòng chính của mã của bạn. Chi nhánh là một số độ lệch từ đường chính. Nó có thể là một độ lệch lớn, giống như một bản phát hành trước đó, hoặc chỉ là một tinh chỉnh nhỏ mà bạn muốn thử. Thẻ là ảnh chụp nhanh mã của bạn. Đó là cách đính kèm nhãn hoặc dấu trang vào một bản sửa đổi cụ thể.

Nó cũng đáng nói đến trong subversion, thân cây, chi nhánh và thẻ chỉ là quy ước. Không có gì ngăn bạn làm việc trong các thẻ hoặc có các nhánh là đường chính của bạn, hoặc bỏ qua tất cả các lược đồ thẻ nhánh. Nhưng, trừ khi bạn có một lý do rất tốt, tốt nhất là nên tuân theo quy ước.

Những gì đi vào SVN? Chỉ có Mã nguồn hoặc bạn có chia sẻ các tệp khác ở đây không?

Cũng là một sự lựa chọn cá nhân hoặc nhóm. Tôi thích giữ bất cứ điều gì liên quan đến việc xây dựng trong kho của tôi. Điều đó bao gồm các tệp cấu hình, tạo tập lệnh, tệp phương tiện có liên quan, tài liệu, v.v. Bạn nên không phải kiểm tra các tệp cần phải khác nhau trên mỗi máy của nhà phát triển. Bạn cũng không cần phải kiểm tra các sản phẩm phụ của mã của bạn. Tôi đang nghĩ chủ yếu là xây dựng các thư mục, các tệp đối tượng và những thứ tương tự.


4
2018-01-21 08:40



Thông thường, nhưng không thường xuyên khi bạn nhấn ctrl + s. Đã đồng ý. Bạn có thể phải lưu các thay đổi của bạn để xem các hiệu ứng. Tôi có thể làm điều đó 10 lần, xây dựng một số mã một chút, trước khi tôi có một cái gì đó tôi có thể cam kết và có một bình luận ý nghĩa về những gì tôi đã làm. Nói cách khác, tôi muốn ý kiến ​​của tôi nói "thêm tính năng này" hoặc "sửa lỗi đó" và không "chọc vào một vài dòng, không chắc chắn cách thức này sẽ hoạt động". Vì vậy, tôi cam kết có thể một nửa tá lần một ngày. - Nathan Long