Giới thiệu hệ thống quản lí phiên bản

Giới thiệu hệ thống quản lí phiên bản

Version control (aka Revision control or Source control) is the management of changes in computer files. It tracks your files over times and help you easily get back your work to a previous version. This is extremely important with a team, when many people can edit the same file.

You used it, but you don't know ...

It's so interesting to know that you usually use the version control in your work. Perhaps there are some files named with numbers like these in your computer:

  • report-1.doc

  • report-2.doc

  • my_current_stuff_20110912.psd

  • my_current_stuff_20111011.psd

  • ...

Why these file exist and have such names? You add a number or a date string to the end of the file name because you want to have a backup of your current work. If you go wrong in the future and want to have the latest good version, you can get it easily (may be not quickly). As you can see, version control plays an important roll in your work though you are not aware of it.

A version control system, huh, why do we need it?

A good version control system (VCS) will allow you to do the following stuff easily:

  • Backup and restore: files are saved when you need. You can jump to a previous version any time. You can throw many recent change and roll back to the last good version in the database. You can all so get the code from last year and what have changed when getting a bug.

  • Synchronization: all people can have a up-to-date version easily.

  • Track changes and ownership: the VCS can store the information about changes in you files and who the person who made it, which make you easily to see how a file is evolving over time.

  • Sandboxing: as its name, you can freely make and changes in you code and test it in your own computer before "checking in" what you have done.

  • Branching and merging: you can made your own copy of the code, save it in a separate location and develop it in isolation. Later, you can merge your work back into the common area.

The common words you have to know

There are many implementation of a VCS, but all of them should involve these concepts:

The basic:

  • Repository: the database storing files

  • Server: the computer has the repository

  • Client: the computer connect to the server to use the repository. The server and the client may be the same computer.

  • Trunk/Main: the primary location for your code. It is considered as the main branch of your work.

Basic actions:

  • Add: put a file (and/or a directory) into the repository in the first time.

  • Revision: the version of a file. It can be a number-liked string as 1, 2, 3, ... or 1.2, 1.3, ...

  • Head: the latest revision in the repository.

  • Checkout: download files from the repo to your local computer. Some VCS allow you edit the files when they were checked out, others require a explicit option when checking out, otherwise they only give you a read only version.

  • Check in: upload files to the repository. If the file exists and have changes, it will have a greater revision number. You can leave a message when checking in.

  • Changelog/History: a list of changes to a file from the time it's added to the repository.

  • Update/Sync: ynchronize you files to the latest version (head version) of the repository.

  • Revert: throw away your local changes and roll back to the latest verion from the repo.

Advanced actions:

  • Branch: create a separate copy of your work. It is also a noun refers to the working copy which is branched.

  • Diff/Change/Delta: find the differences between two files.

  • Merge/Patch: apply changes from a file to another, for example, aplly what you did in you branch to the common work.

  • Conflict: when there are some changes which cannot be applied in a files in the same time, you know that there is a conflict.

  • Locking: make some files not allow other people to edit it. This is usually used to prevent conflict. You can unlock it later. Some person can unlock the files on purpose when needed, which is called breaking the lock.

Thanks to Kalid Azad at http://betterexplained.com for this section.

Back to the real world, which tools you can use

After reading all above, you can wonder how to use a VCS, implement your own? Feel free to try, but there are many free tool can help you. SVN (subversion http://subversion.tigris.org) and GIT (http://git-scm.com) are two of them. If you are working in Linux or some console system, just get these software to your computer and you the console! For windows users, TurtoiseSVN and TurtoiseGIT (found at http://tortoisesvn.tigris.org and http://code.google.com/p/tortoisegit/) can be a great choice.

Quản lí phiên bản là việc theo dõi cũng như quản lý các thay đổi trên tệp tin của bạn. Hệ thống lưu trũ thông tin về các tệp tại các thời điểm khác nhau và giúp người dùng dễ dàng quay trở lại một phiên bản khi cần thiết. Điều này đặc biệt quan trọng khi làm việc trong một nhóm, nhiều ngươi có thể cùng chỉnh sửa một tệp tin.

Có lẽ bạn đã dùng nhưng không nhận ra ....

Có lẽ bạn sẽ thấy khá thú vị khi biết rằng quản lí phiên bản không phải xa lạ gì và bạn đã từng dùng nó rất nhiều trong công việc. Đâu đó trong máy tính của mình, bạn sẽ bắt gặp những tệp có tên kèm theo một phần số như sau:

  • report-1.doc

  • report-2.doc

  • my_current_stuff_20110912.psd

  • my_current_stuff_20111011.psd

  • ...

Tại sao lại có những con số và ngày tháng trong tên của các tệp này? Đó là vì bạn muốn lưu một bản sao cho công việc của mình. Nếu trong tương lai bạn tình cờ khuấy tung công việc của mình, sẽ khá dễ dàng (nhưng thường sẽ không nhanh) có được một bản sao "khá tốt" trước đó.

Tại sao chúng ta phải cần một hệ thống quản lý phiên bản (VCS) ?

Nếu có một hệ thống quản lý phiên bản (Version control system - VCS) tốt, bạn sẽ dễ dàng làm các công việc sau:

  • Sao lưu và phục hồi: các tệp tin được sao lưu bất cứ lúc nào bạn thay đổi chúng. Bạn có thể dễ dàng bỏ qua những thay đổi gần đây để có một bản sao tốt gần nhất của công việc hay quay lại một phiên bản cách đây một năm để tìm hiểu tại sao lại có lỗi như bây giờ.

  • Đồng bộ hóa: mọi người có thể có một bản sao được cập nhật mới nhất một cách dễ dàng.

  • Quản lí thay đổi và tác giả: VCS lưu thông tin về các sự thay đổi với từng tệp cũng như ai đã thay đổi nó, điều này khá có ích nếu bạn muốn xem một tệp được phát triển như thế nào.

  • Sandboxing: Như tên gọi của mình, bạn có thể tự do thay đổi trong công việc và kiểm tra trên máy tính của mình trước khi gửi nó lên vùng làm việc chung.

  • Phân nhánh và gộp: bạn có thể sao chép toàn bộ công việc vào một vị trí riêng và phát triển nó một cách độc lập. Sau này, bạn có thể gộp công việc của mình vào công việc chung nếu muốn.

Những từ ngữ hay gặp mà bạn nên biết

Có nhiều chương trình hiện thực một VCS nhưng tất cả thường dùng các khái niệm sau:

Về cơ bản:

  • Repository: cơ sở dữ liệu lưu trũ các tệp

  • Server: máy tính chứa repository

  • Client: máy tính kết nối tới server. Một máy tính có thể vừa là server (máy chủ) vừa là client (máy khách).

  • Trunk/Main: chỗ lưu trũ chính của công việc.

Các hoạt động chính:

  • Add: thêm một tệp hoặc thư mục vào repository (kho chứa).

  • Revision: phiên bản của một tệp, đó thường là các chuỗi có dạng 1, 2, 3, ... hay 1.2, 1.3, ...

  • Head: phiên bản mới nhất của toàn bộ repository.

  • Checkout: tải các tệp về máy của mình. Thông thường, các VCS cho phép bạn chỉnh sửa trên chính phiên bản được check out, tuy nhiên, một số VCS khác yêu cầu bạn cung cấp một số lựa chọn (option) khi check out, nếu không bạn chỉ có thể có một phiên bản chỉ cho phép đọc (read only).

  • Check in: gửi tệp lên repository (kho chứa), nếu tệp đã tồn tại và có thay đổi, nó sẽ được đánh số phiên bản cao hơn. Bạn có thể để lại một lời nhắn (message) khi check in.

  • Changelog/History: lịch sử những thay đổi của một tệp từ lúc nó được đưa vào repository.

  • Update/Sync: đồng bộ các tệp của bạn với phiên bản mới nhất (bản HEAD) của repository.

  • Revert: bỏ đi các thay đổi của bạn và cập nhật công việc lên phiên bản mới nhất của repository.

Các thao tác nâng cao:

  • Branch: tạo một bản sao của công việc dùng cho mục đích phát triển riêng, đây còn có thể là danh từ khi chỉ phần công việc được tách ra theo cách này.

  • Diff/Change/Delta: tìm các điểm khác nhau giữa hai tệp.

  • Merge/Patch: áp dụng các thay đỏi từ một tệp vào một tệp khác.

  • Conflict: bạn nói có xung đột (conflict) khi không thể áp dụng hai thay đổi vào một tệp cùng lúc.

  • Locking: không cho phép mọi người thay đổi một tệp nào đó, thường là để tránh xung đột, bản có thể mở khóa (unlock) cho tệp này nếu muốn. Đôi khi, một người khác sẽ phải cố tình mở khóa (breaking the lock) một tệp nếu cần phải sửa nó và tệp đó bị khóa (lock).

Cảm ơn Kalid Azad http://betterexplained.com vì nội dung của phần này.

Trên thực tế, cái gì sẽ giúp bạn?

Đọc xong những phần trên, bạn có thể tự hói làm thế nào để có một VCS, tự tạo một chương trình cho mình ư? Bạn hoàn toàn có thể làm vậy, nhưng ngoài kia có rất nhiều công cụ miễn phí khác giúp bạn làm điều đó đơn giản hơn. SVN (subversion http://subversion.tigris.org) và GIT (http://git-scm.com) là hai ví dụ. Nếu bạn làm việc trên Linux hoặc quen với các thao tác trên dòng lệnh, chỉ đơn giản là tải về các phần mềm này và dùng giao diện dòng lệnh sẵn có! Với những người dùng windows, TurtoiseSVN và TurtoiseGIT (trang chủ http://tortoisesvn.tigris.orghttp://code.google.com/p/tortoisegit/) có thể là một lựa chọn tốt.

Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Khanh Hoang

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Tìm kiếm bất động sản

 

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 

Hướng Dẫn Không cho người khác xem avatar Facebook

Để người khác không thể xem được ảnh đại diện facebook của bạn thì một cách

Phân trang danh mục để Google tìm kiếm nhanh nhất

Phân trang danh mục để Google tìm kiếm nhanh nhất

Với số lượng bài viết lớn trên một danh mục khi đó bạn phải phân trang danh mục, nhưng phân trang sao cho Google tìm kiếm nhanh nhất và không tìm lại trang đó.

Tại DrupalCon Nashville bàn về Drupal và Composer

Tại DrupalCon Nashville bàn về Drupal và Composer

While Composer isn't required when using Drupal core, many Drupal site builders use it as the preferred way of assembling websites (myself included).

Công ty diệt chuột T&C

 

Diet con trung