# CVS dành cho các nhà phát triển Moodle

> CVS là từ viết tắt của Concurrent Versioning System, một cách sử dụng thông thường quản lý mã nguồn đối với các dự án phần mềm lớn. CVS giữ tất cả các phiên bản của tất cả các file vì thế không cái nào bị mất bao giờ, và chúng được kiểm tra bởi nhiều người. Nó cũng cung cấp nhiều cách kết hợp mã nếu hai hoặc nhiều người đang làm việc trên file tương tự. Tất cả các mã và tất cả các phiên bản được lưu trữ trên một server trung tâm (trong trường hợp của Moodle, ở Sourceforge).

> Nếu bạn muốn dowload Moodle sử dụng CVS để chạy một site, thì hầu như bạn không cần trang này - làm theo các hướng dẫn của CVS ở trang download Moodle .

> 1. Tham gia vào dự án như một nhà phát triển
> 2. Các môđun CVS
> 3. Các lệnh CVS cơ bản
>    3.1. CVS trên Unix
>    3.2. CVS trên Windows
> 4. Làm việc với các nhánh
>    4.1. Phát triển phần thân
>    4.2. Các nhánh ổn định đối với mỗi phiên bản
>    4.3. Các nhánh đặc trưng đối với các thay đổi lớn

> ## 1. Tham gia vào dự án như là một nhà phát triển

> > Vì thế, bạn được yêu cầu truy cập soạn thảo CVS để trợ giúp chúng tôi phát triển và duy trì Moodle! Welcome aboard!

> > Để có thể viết những thay đổi vào trong tệp nén CVS của Moodle, đầu tiên bạn cần có một tài khoản ở Sourceforge ( việc đăng ký là miễn phí và đơn giản). Đối với các ví dụ trên trang này, chúng ta giả sử rằng username là myusername và password của bạn là mypassword. Xem các hướng dẫn ghi chú đặc biệt của sourceforge tạo thư mục chủ CVS của bạn - những việc mà bạn phải làm đối với mọi tài khoản mới để làm cho nó có hiệu lực đối với CVS. Về cơ bản thì bạn phải sử dụng ssh để kết nối tương tác tới cvs.sourceforge.net.

> > Một khi bạn có một tài khoản Sourceforge làm việc, liên lạc với Martin Dougiamas vì thế anh ta có thể cài đặt tài khoản của bạn cùng với việc điền truy cập vào các thư mục đặc biệt của Moodle.

> > Để tránh dấu nhắc yêu cầu mypasswordmỗi lần bạn chạy một lệnh CVS, làm theo các hướng dẫn Sourceforge đối với việc sử dụng các khoá được chứng thực . Bước này là tuỳ chọn, nhưng nó có thể làm but it can make your CVS experience a lot nicer.

> > Cùng với làm điều đó, bạn nên có tất cả các quyền bạn cần, vì thế bạn cần cài đặt máy của bạn và download các tài nguyên hiện tại vì thế bạn có thể bắt đầu làm việc với chúng.

> ## 2. Các môđun của CVS

> > Trong CVS, từ "môđun" đề cập đến việc phân chia tập hợp mã. Trong Moodle chúng ta có các môđun sau trong kho lưu trữ của chúng ta:

> > > moodle - mã nguồn Moodle chính

> > > contrib - các đóng góp người dùng và sự đa dạng của các loại mã trong việc phát triển

> > > mysql - một phpMyAdmin tuỳ chọn để đưa vào trong Moodle đối với cơ sở dữ liệu admin

> > > windows-cron - một gói nhỏ mà có khả năng tạo cron trên hệ thống Windows

> > > docs - Tài liệu được đóng góp bởi nhiều người dùng khác nhau

> > Tất cả mọi người đang làm việc trên các đặc tả đã tồn tại trong môđun moodle , nhưng nhiều cái cũng được đóng góp bởi các ý kiến mới trong các môđun contrib. Một mã tìm kiếm ở một mức độ nào đó trong vùng contrib, nó có thể di cư toàn bộ sang cây thư mục moodle chính.

> ## 3.Các lệnh CVS cơ bản

> > ### 3.1 CVS trên Unix

> > > Sourceforge CVS sử dụng ssh như một tầng phiên đối với việc bảo mật, vì thế bạn sẽ phải thiết lập một biến môi trường CVS_RSH trong shell Unix của bạn. Tốt nhất nên đặt những lệnh này trong .bashrc hoặc .cshrc của bạn vì thế bạn không phải gõ nó đối với tất cả mọi lần :

> > > setenv CVS_RSH ssh (for csh, tcsh etc)
> > > export CVS_RSH=ssh (for sh, bash etc)

> > > Tiếp theo bạn kiểm tra phiên bản phát triển mới nhất của Moodle sử dụng điều này (tất cả một dòng):

> > > cvs -z3 -d:ext:myusername@cvs.sourceforge.net:/cvsroot/moodle co moodle

> > > Lệnh này tương tự đối với các môđun CVS khác:

> > > cvs -z3 -d:ext:myusername@cvs.sourceforge.net:/cvsroot/moodle co contrib

> > > Đừng cố gắng chạy lệnh CVS đầu tiên này trên một sự cài đặt moodle đã tồn tại: Bắt đầu làm mới với một thư mục mới.

> > > Chú ý rằng bạn sẽ bị yêu cầu mypassword đối với mỗi lệnh trừ khi bạn thiết lập các khoá được chứng thực.

> > > Bây giờ bạn nên có một thư mục 'moodle' mới. Bạn có thể đổi tên nó và di chuyển nó tới một vị trí khác nếu bạn muốn. Đi vào trong nó:

> > > cd moodle

> > > Tất cả các file Moodle mới nhất nên ở đây. Bây giờ bạn có thể thay đổi các file trong bản copy của bạn. Để so sánh các file của bạn và các thư mục lại copy CVS chính trên server sử dụng cvs khác, ví dụ:

> > > cvs diff -c config-dist.php
> > > cvs diff -c lang

> > > Tìm nạp các cập nhật mới nhất bởi sử dụng server use:

> > > cvs update -dP

> > > Để copy các file mới của bạn quay trở lại server bạn nên sẽ làm như sau:

> > > cd lang/ca
> > > cvs commit

> > > Bạn sẽ được gợi ý thêm một số chú thích (phụ thuộc vào trình soạn thảo văn bản mặc định của bạn) ... thêm một chú thích có ý nghĩa và đóng trình soạn thảo của bạn lại ... các file sẽ được gửi tưói Sourceforge và được lưu trữ. Được thực hiện!

> > > Để lưu trữ nhiều hơn bạn có thể đặt các tham số mặc định vào trong một file được gọi là .cvsrc trong thư mục chính của bạn. Ví dụ, cái của tôi chứa:

> > > diff -c
> > > update -dP

> > > Thử 'trợ giúp cvs' để biết thêm thông tin ...

> > ### 3.2 CVS trên Windows

> > > Đầu tiên bạn cần download một bản copy Moodle đầy đủ mới sử dụng tài khoản người phát triển.

> > 1. Lấy được TortoiseCVS từ tortoisecvs.org và cài đặt nó, sau đó khởi động lại.
> > 2. Tìm kiếm hoặc tạo một folder mới ở đâu đó mà bạn muốn Moodle được downloaded xuống.
> > 3. Kích chuột phải vào folder đó và chọn " kiểm tra CVS" từ danh sách thả xuống. Bạn sẽ nhìn thấy một hộp thoại.
> > 4. Copy văn bản này vào trong trường CVSROOT (sử dụng username của riêng bạn!):

> >         :ví dụ:myusername@cvs.sourceforge.net:/cvsroot/moodle

> > 5. Trong trường "Môđun ", gõ "moodle" để nhận phiên bản phát triển mới nhất của Moodle, "contrib" để nhận được thư mục các đóng góp, hoặc "mysql" để nhận được môđun MySQL Admin.
> > 6. Nhấn nút: "OK"và mọi thứ sẽ được tải xuống.

> > > Một hộp thoại sẽ hiển thị tất cả các trường đang được tải xuống, và sau đó bạn sẽ có một bản copy đầy đủ của Moodle. Sau lần kiểm tra đầu tiên này, bạn có thể tìm nạp các file được cập nhật mới nhất từ CVS server:

> > 1. Kích chuột phải trên folder Moodle của bạn (hoặc bất kỳ file nào) và chọn "Cập nhật CVS".
> > 2. Xem các bản ghi cuộn xuống. Xem chú ý về các xung đột mà có thể xuất hiện khi mã cục bộ cục bộ của bạn thay đổi mà nó xung đột với các phiên bản đang đưa vào - bạn sẽ cần soạn thảo những file này và giải quyết các xung đột đó bằng tay.

> > > Sau khi thay đổi các file( bạn sẽ thông báo thay đổi các biểu tượng từ màu xanh sang màu đỏ !), you can commit them back to the CVS server like this:

> > 1. Kích chuột phải vào folder Moodle (hoặc bất kỳ file nào ) và chọn " CVS Commit...".
> > 2. Trong hộp thoại, gõ một mô tả một cách rõ ràng những thay đổi bạn đang cam kết .
> > 3. Nhấn chuột vào nút "OK". Những thay đổi của bạn sẽ được gửi tới server.

> ## 4. Làm việc với các nhánh

> > Biểu đồ này chỉ ra làm thế nào các nhánh môđun moodle chính đưa vào các phiên bản khác nhau toàn bộ thời gian.

> > Để xem tất cả các thẻ hiện tại và các nhánh mà nó có sẵn, sử dụng lệnh này trên bất kỳ file thân thuộc nào(ví dụ file index.php trong thư mục moodle):

> > cvs status -v index.php

> > Một số nguyên tắc tagging:

> > - Các tên Tag và nhánh sẽ luôn luôn là chữ hoa.
> > - Các Tag và các nhánh sẽ luôn luôn được ứng dụng đối vớitoàn bộ môđun (tất cả các môđun của Moodle). Đừng gắn các file hoặc các thư mục một cách riêng rẽ.
> > - Chúng tôi không cho phép đổi tên các tags bởi vì mọi người có thể đang hồi âm chúng, cho nên nhận chúng đúng lần đầu tiên so get them right the first time!

> > ### 4.1 Phát triển phần thân

> > > Phần thân của CVS là phiên bản phát triển chính của Moodle. Trong CVS nó cũng được biết đến như HEAD, hoặc nhánh mặc định.

> > > Các nhà phát triển Moodle cố gắng duy trì tính ổn định này chừng nào có thể, nhưng bởi vì nó thường chứa mã mới nó hầu như có các lỗi và tính không ổn định nhỏ.

> > > Mọi thứ bây giờ và sau đó chúng ta quyết định sản phẩm có đủ đặc trưng để tạo nên một phiên bản. Ở thời điểm này, phần thân được gắn với một thẻ MOODLE_XX_BETA (trong trường hợp chúng ta muốn quay trở lại n case we ever want to roll back to that point) và một nhánh mới được tạo thành đối với phiên bản, được gọi là MOODLE_XX_STABLE.

> > > Một gói Beta cũng được phát hành ở thời điểm này - nó dành cho những người thử những người mà không sử dụng CVS nhưng muốn thử nghiệm các đặc trưng mới nhất và các thông báo lỗi.

> > ### 4.2 Các nhánh ổn định đối với mỗi phiên bản

> > > Ngay khi một nhánh ổn định MOODLE_XX_STABLE được tạo ra, các lỗ lực cố gắng phát triển sẽ phân nhánh thành hai hướng đối với mỗi khoảng thời gian. Mọi người có thể tiếp tục làm việc trên các đặc trưng mới trong phần thân đối với các phiên bản tiếp theo, nhưng tất cả các nhà phát triển nên cố gắng tập trung sử dụng nhánhổn đinh hiện tại và cố định các lỗi mà được tìm thấy trong nó.

> > > Bạn có thể chuyển đổi bản copy Moodle cục bộ của bạn thành phiên bản ổn định sử dụng lệnh sau trong Unix từ thư mục gốc :

> > > cvs update -dP -r MOODLE_XX_STABLE

> > > Sau khi làm tất cả xong, tất cả các lệnh được mô tả ở trên sẽ áp dụng cho phiên bản ổn định đó. Quay trở lại với vấn đề phần thân :

> > > cvs update -dPA

> > > Trên Windows clients bạn nên có một menu từ đó bạn có thể chọn nhánh .

> > > Một khi nhánh bảng mới thực sự ổn định, một phiên bản có thể được có thể được khai báo. Các gói được tạo để phân phối và nhánh sẽ được gắn thẻ (bởi Martin) với một thẻ đặt tên là: MOODLE_XXX

> > > Một cách định kỳ, lỗi cố định trong nhánh bảng sẽ được kết hợp lại vào trong phần thân vì thế chúng trở nên có sẵn trong các phiên bản tương lai của Moodle. Một thẻ di chuyển được gọi là MOODLE_XX_MERGED sẽ được duy trì để theo dõi sự kết hợp cuỗi cùng. Quy trình đối với mỗi lần kết hợp này là như sau:

> > > 1. Get out the very latest trunk version.
> > >    cvs update -dPA
> > > 2. Kết hợp mọi thứ vào trong nhánh từ nhánh cuối cùng, đưa vào phần thân của bạn
> > >    cvs update -kk -j MOODLE_13_MERGED -j MOODLE_13_STABLE
> > > 3. Xem một cách cẩn thận các bản ghi được cập nhật đối với các xung đột, và cố định mọi file mà bạn nhìn thấy có xung đột
> > > 4. Check the merged copy back into CVS trunk version
> > >    cvs commit
> > > 5. Quay trở lại phiên bản nhánh Go back to the branch version
> > >    cvs update -dPr MOODLE_13_STABLE
> > > 6. Cập nhật thẻ kết hợp đang thay đổi vì thế quy trình xử lý này có thể được lặp lại thời gian tới Update the floating merge tag so that this process can be repeated next time
> > >    cvs tag -RF MOODLE_13_MERGED

> > > Cuối cùng các kết quả đối với $version trong tất cả các file version.php của Moodle trong nhánh ổn định không nên được cập nhật ở tất cả khi có thể( ngoại trừ số cuối cùng nếu cần thiết ). Nguyên nhân là ai đó đang cập nhật từ một phiên bản rất ổn định thành phiên bản ổn định tiếp theo có thể thiếu các nâng cấp cơ sở dữ liệu điều đó được xảy ra trên phần thân.

> > ### 4.3 Các nhánh đặc trưng đối với các thay đổi lớn

> > > Thỉnh thoảng, có thể có một đặc trưng rất lớn mà cần được kiểm tra vì thế một số người có thể làm việc trên nó, nhưng nó quá không ổn định để tính đến trong phần thân phát triển chính.

> > > Trong những trường hợp này một nhánh ngắn có thể được tạo ra để làm việc trên đặc trưng, và sau đó kết hợp trở lại vào trong phần thân chính ngay khi có thể. Một ví dụ được gọi là nhánh MOODLE_14_WIDGET có thể được xem trong biểu đồ ở trên.

> > > Nếu bạn cần làm điều này cho đặc trưng WIDGET mới của bạn, làm theo các bước sau :

> > > 1. Thảo luận với các nhà phát triển khác để đảm bảo rằng nó là cần thiết !
> > > 2. Tạo một thẻ mới trên phần thân (đối với tất cả Moodle) được gọi là MOODLE_XX_WIDGET_PRE
> > >    cvs tag -R MOODLE_XX_WIDGET_PRE
> > > 3. Tạo nhánh của bạn được gọi là MOODLE_XX_WIDGET
> > >    cvs tag -Rb MOODLE_XX_WIDGET
> > > 4. Làm việc trong nhánh đó cho tới khi đặc trưng là ổn định. Cam kết khi cần thiết.
> > >    cvs commit
> > > 5. Khi đã sẵn sàng, kết hợp toàn bộ nhánh vào trong phần thân, cố định các xung đột, cam kết nó vào phần thân và sau đó loại bỏ nhánh.
> > >    cvs update -dPA
> > >    cvs update -kk -j MOODLE_XX_WIDGET
> > >    cvs commit

> Chúc may mắn và thu được nhiều điều thú vị!

Tài liệu về Moodle

Phiên bản: $Id$