Sử dụng hệ thống kiểm soát phiên bản bên ngoài
Một trong những điểm mạnh lớn nhất của môi trường soạn thảo và chỉnh sửa điện tử là sự dễ dàng khi tạo và sửa đổi tệp. Khả năng này cho phép các ý tưởng được ghi lại, khám phá và hoàn thiện nhanh chóng, nhưng đồng thời cũng khiến việc theo dõi các thay đổi được thực hiện trên những tệp có giá trị như mã nguồn và dữ liệu thiết kế điện tử trở nên khó khăn.
Nhu cầu theo dõi các thay đổi được thực hiện đối với một tệp, kết hợp với nhu cầu về một giải pháp có hệ thống để quản lý các nguồn được lưu dưới dạng điện tử, đã dẫn đến sự ra đời của Hệ thống Kiểm soát Phiên bản (VCS). Hệ thống kiểm soát phiên bản là các công cụ phần mềm không chỉ có khả năng duy trì lịch sử của nhiều phiên bản khác nhau của một tệp, mà còn hỗ trợ mở bất kỳ bản sửa đổi nào của tệp đó, cũng như so sánh các thay đổi giữa bất kỳ hai phiên bản nào của tệp. Một VCS thường sẽ tích hợp với Hệ điều hành (OS) cục bộ bằng cách cung cấp thêm các chức năng và thao tác quản lý phiên bản cho thư mục và tệp.
Hệ thống Kiểm soát Phiên bản có thể hoạt động hoàn toàn độc lập với môi trường soạn thảo và chỉnh sửa được sử dụng để tạo tệp. Chúng thường cung cấp một giao diện cho phép bạn Add rồi Commit tệp vào một khu vực lưu trữ trung tâm gọi là repository, một tính năng Checkout để sao chép tệp từ repository sang thư mục làm việc, một tính năng Commit để đưa mọi thay đổi trở lại repository, một phương pháp ghi nhật ký thông tin về thay đổi, và nhiều hơn nữa.
Những tính năng này có trong các tiện ích mở rộng shell của Windows như Tortoise client và cũng được tích hợp trong chính Altium Designer. Các thao tác VCS có thể được thực hiện ngay trong môi trường Altium Designer mà không cần truy cập hệ thống tệp của OS.
Sẽ hữu ích nếu bạn hiểu thuật ngữ được sử dụng với các hệ thống kiểm soát phiên bản. Mặc dù có rất nhiều hệ thống khác nhau, nhìn chung chúng đều sử dụng các thuật ngữ tương tự để mô tả chức năng của mình.
Kiến thức cơ bản về Kiểm soát Phiên bản
Altium Designer hỗ trợ các hệ thống kiểm soát phiên bản (VCS) Subversion (SVN) và Git. Vì có hỗ trợ nội bộ cho các hệ thống này, phần mềm cho phép truy cập các lệnh xử lý tệp SVN/Git phổ biến như Commit, Update, v.v. ngay trong Altium Designer, cùng với các khả năng Subversion bổ sung như khả năng tạo một kho SVN. Điều này tích hợp với các tính năng so sánh schematic và PCB, giúp dễ dàng nhanh chóng so sánh và xác định sự khác biệt giữa hai bản sửa đổi của tài liệu schematic hoặc PCB, đồng thời đối với các thiết kế PCB, giải quyết các xung đột sửa đổi đồng thời.
Cách tiếp cận cơ bản khi làm việc với Hệ thống Kiểm soát Phiên bản (VCS) là truy cập một bản sao của các tệp dự án mà bạn muốn làm việc từ một repository, chỉnh sửa các tệp trong Altium Designer rồi ‘commit’ các tệp đã sửa đổi trở lại repository. Việc tương tác với repository được thực hiện thông qua giao diện hệ thống kiểm soát phiên bản, vốn được Altium Designer tích hợp sẵn trong panel Storage Manager và panel Projects.
Chìa khóa để hiểu cách một hệ thống kiểm soát phiên bản hoạt động là nó giám sát trạng thái của các tệp đã được truy cập từ repository, thông qua một thư mục làm việc, và do đó theo dõi bản sửa đổi nào đang được sử dụng cũng như liệu nó có bị sửa đổi hay không. Mặc dù kết quả là như nhau, cách sắp xếp repository và tệp làm việc khác nhau giữa các loại hệ thống kiểm soát phiên bản – Git hoặc SVN.
Git VCS
Hình bên dưới minh họa khái niệm chia sẻ repository Git từ xa lưu giữ một chuỗi các bản sửa đổi tệp thiết kế (đến revision 5), trong đó nội dung của nó đã được sao chép vào một Working Git repository cục bộ – thường bằng cách Clone repository từ xa hoặc Pull dữ liệu của nó vào working repository. Khi các tệp trong working repository được mở trong môi trường Altium Designer, Altium Designer nhận biết rằng một tệp dự án đang nằm dưới sự kiểm soát phiên bản của Git, với trạng thái kiểm soát phiên bản hiện tại của nó được hiển thị trong cả Storage Manager và Projects panel.
► Xem trang Kiểm soát Phiên bản dựa trên Git để biết thêm thông tin.
Subversion VCS
Hình bên dưới minh họa khái niệm một repository Subversion lưu giữ một chuỗi các bản sửa đổi tệp thiết kế (đến revision 5), với bản sao mới nhất được checkout (File » Check Out) vào một thư mục làm việc. Khi các tệp trong thư mục làm việc được mở trong môi trường Altium Designer, Altium Designer nhận biết rằng một tệp dự án đang nằm dưới sự kiểm soát phiên bản của SVN, với trạng thái kiểm soát phiên bản hiện tại của nó được hiển thị trong cả Storage Manager và Projects panel.
► Xem trang Kiểm soát Phiên bản dựa trên SVN để biết thêm thông tin.
Trong cả hai hệ thống VCS ở trên, liên kết giữa source repository và vị trí làm việc được tham chiếu trong cơ sở dữ liệu VCS của vị trí làm việc đó (trong thư mục con hệ thống .svn hoặc .git).
Khi các tệp làm việc VCS đang mở trong Altium Designer, menu chuột phải trong Storage Manager panel (và Projects panel) cho phép bạn thực hiện các thao tác VCS tiêu chuẩn, chẳng hạn như commit một tệp đã thay đổi vào repository trung tâm (SVN) hoặc working repository (Git).
Truy cập Kiểm soát Phiên bản
Trong Altium Designer, các thao tác liên quan đến VCS có thể được thực hiện thông qua các panel Projects và Storage Manager, trong đó panel thứ hai cung cấp quyền truy cập trực tiếp đến các lệnh và thông tin VCS bổ sung. Các panel được điền bằng các tài liệu dự án và trạng thái VCS liên quan của chúng khi được mở trong Altium Designer.
Các panel này có thể được mở từ menu của nút
ở góc dưới bên phải của vùng làm việc, hoặc từ menu chính View » Panels.
Panel Projects
Projects panel hiển thị tất cả các dự án hiện đang mở trong Altium Designer, cùng với các tài liệu cấu thành và trạng thái Kiểm soát Phiên bản tương ứng của từng tệp.
Trạng thái tệp VCS trong panel được biểu thị bằng một loạt biểu tượng tương ứng với các điều kiện tệp cụ thể do hệ thống kiểm soát phiên bản phát hiện. Trạng thái điều kiện của từng tệp, xét theo nghĩa chung, là tương đối so với tệp tương đương đang tồn tại dưới sự kiểm soát phiên bản trong repository được liên kết. Các lệnh VCS trong Projects panel được truy cập từ tùy chọn Version Control trong menu ngữ cảnh chuột phải của panel.
Các biểu tượng Kiểm soát Phiên bản như xuất hiện trong Projects panel
► Xem trang panel Projects để biết thêm thông tin.
Panel Storage Manager
Storage Manager panel cung cấp cái nhìn phong phú về tài liệu đang hoạt động từ góc độ lưu trữ tệp và cung cấp quyền truy cập vào tính năng lịch sử tài liệu cục bộ cũng như trạng thái/lệnh kiểm soát phiên bản.
Trạng thái tệp VCS trong panel được biểu thị bằng một loạt mô tả và các biểu tượng tương ứng liên quan đến các điều kiện tệp cụ thể do hệ thống kiểm soát phiên bản phát hiện. Trạng thái điều kiện của từng tệp, xét theo nghĩa chung, là tương đối so với tệp tương đương đang tồn tại dưới sự kiểm soát phiên bản trong repository được liên kết.
Storage Manager panel
Các lệnh VCS trong Storage Manager panel được truy cập từ menu ngữ cảnh chuột phải. Để thực hiện một thao tác VCS trên một tệp cụ thể, hãy nhấp chuột phải vào mục nhập của tệp đó trong panel và chọn lệnh mong muốn – ví dụ: Commit, Update, Resolve conflict, v.v.
Lịch sử revision của tệp đã chọn và lịch sử tài liệu cục bộ có thể được xem ở phần dưới của panel, hoặc xem dòng thời gian tổng thể của các sự kiện nếu bạn chuyển sang 'classic view' – Switch to Classic View trong các tùy chọn nhấp chuột phải. Số revision được hiển thị sẽ tăng lên sau mỗi lần VCS commit, trong đó bản sửa đổi đầu tiên (Revision 1) tương ứng với việc tạo các thư mục dự án VCS, trước khi tệp được thêm vào.
► Xem trang panel Storage Manager để biết thêm thông tin.
Trạng thái Kiểm soát Phiên bản
Đối với cả hai panel Projects và Storage Manager, trạng thái VCS hiện tại của từng tệp đang được kiểm soát phiên bản sẽ được hiển thị cùng với mục nhập của nó trong panel.
Hệ thống kiểm soát phiên bản về cơ bản giám sát và so sánh các tệp trong thư mục làm việc với các đối tượng tương ứng của chúng trong repository thiết kế. Altium Designer vừa yêu cầu vừa trao đổi thông tin với hệ thống kiểm soát phiên bản thông qua giao diện VCS của nó, và phản hồi tương ứng với các điều kiện trạng thái tệp mang tính so sánh đó. Trên thực tế, điều này thể hiện qua các biểu tượng tệp trong các panel Projects và Storage Manager, thông qua nhiều cảnh báo VCS khác nhau và bằng các thay đổi phù hợp trong các lệnh quản lý tệp khả dụng.
Các biểu tượng và ý nghĩa của chúng được mô tả trong phần Biểu tượng Trạng thái Kiểm soát Phiên bản của trang Quản lý Tài liệu Dự án .
Truy cập Đa người dùng
Trong hầu hết các tình huống, hạ tầng Kiểm soát Phiên bản của một công ty sẽ dựa trên các repository SVN hoặc Git trung tâm, được phục vụ qua mạng bằng một trong các phương thức giao thức khả dụng – svn, svn+ssh, https, v.v. Điều này cung cấp quyền truy cập cho tất cả người dùng trên mạng, tùy theo quyền hạn, và là phương tiện cho phát triển dự án cộng tác từ một nguồn duy nhất.
Ngược lại, các khả năng truy cập đa người dùng cho phép các thành viên khác nhau trong nhóm tiếp tục làm việc trên một dự án một cách độc lập mà không phải chờ người khác check-in lại tệp trước khi họ có thể làm việc trên đó. Hệ thống kiểm soát phiên bản Git phân tán còn đưa lợi thế này tiến thêm một bước bằng cách cho phép các tệp được commit vào working repository cục bộ trong khi bạn làm việc, và những thay đổi đã commit đó được ‘push’ trở lại repository Git trung tâm vào bất kỳ thời điểm nào sau đó – vì vậy, không cần kết nối mạng cho đến lúc đó.
Tuy nhiên, một VCS tương thích cho làm việc nhóm đòi hỏi phải có các công cụ và kỹ thuật để giải quyết tình huống không thể tránh khỏi khi hai người dùng cùng sửa đổi một tệp. Khi những khả năng này có sẵn, nền tảng cho cộng tác thiết kế đa người dùng thực sự cùng các lợi ích liên quan của nó sẽ được thiết lập.
Để hỗ trợ tình huống này, Altium Designer bao gồm các khả năng so sánh schematic và PCB (hoặc 'diff'), khả dụng thông qua panel Storage Manager.
Repository VCS
Cách tốt nhất để làm việc từ một tập tệp nguồn đã biết là lưu trữ dự án thiết kế trong một môi trường được kiểm soát, chẳng hạn như một repository Kiểm soát Phiên bản. Điều này rất quan trọng vì cách duy nhất để đảm bảo rằng các đầu ra được tạo từ đúng các tệp nguồn là:
- Xác nhận rằng tập tệp nguồn là mới nhất.
- Chụp một ảnh chụp nhanh của chúng.
- Tạo đầu ra từ ảnh chụp nhanh đó.
Trong Altium Designer, một repository như vậy được gọi là Design Repository. Thuộc sở hữu của nhóm thiết kế, Design Repository cung cấp góc nhìn có độ phân giải cao về lịch sử của quá trình thiết kế và là công cụ cộng tác chính được nhóm thiết kế sử dụng.
Design Repository trở thành repository trung tâm, từ đó nhiều thành viên trong nhóm có thể check dữ liệu vào và ra, đồng thời vẫn duy trì lịch sử revision đầy đủ của mọi thay đổi được thực hiện đối với thiết kế. Do đó, một thiết kế được lưu trữ dưới dạng một chuỗi các phiên bản của dự án cấu thành và các tài liệu nguồn của nó, xây dựng nên bức tranh tiến triển về ý đồ của nhà thiết kế theo thời gian. Bằng cách sử dụng Design Repository có kiểm soát phiên bản, bạn có được sự đảm bảo tích hợp rằng không có revision nào của thiết kế bị mất, cho phép cộng tác an toàn trên cùng một thiết kế giữa các thành viên của một nhóm có thể phân tán về mặt địa lý. Bản chất của hệ thống kiểm soát phiên bản cũng cung cấp một dấu vết kiểm toán cho thiết kế. Trách nhiệm giải trình đầy đủ xuất hiện nhờ tính minh bạch về việc ai đã thay đổi cái gì, trong tài liệu nguồn nào và vào thời điểm nào. Hệ thống có thể hỗ trợ nhiều Design Repository được kiểm soát phiên bản, với liên kết đến một repository cụ thể được thiết lập thông qua liên kết kiểm soát phiên bản trong thư mục dự án.
Trước khi sử dụng kiểm soát phiên bản, các tệp dự án phải được cả VCS và Altium Designer nhận diện là đang nằm dưới sự kiểm soát phiên bản. Quy trình này có thể khác nhau tùy theo các phương pháp và ứng dụng VCS khác nhau, nhưng về cơ bản bao gồm việc tạo và/hoặc kết nối với một design repository và thêm các tệp dự án thiết kế vào repository đó.
Design repository dựa trên cấu trúc cơ sở dữ liệu và lưu trữ nội bộ thông tin theo phân cấp tệp và thư mục, được gọi là cây tệp. Repository thực tế mà bạn kết nối có thể là một repository SVN trung tâm, một working repository Git (được liên kết với một remote Git repository), hoặc một repository bạn đã tạo tại một vị trí có thể truy cập như trên PC cục bộ hoặc vị trí mạng dùng chung.
Cập nhật các thay đổi mới vào Kiểm soát Phiên bản
Khi một dự án đã được thêm vào kiểm soát phiên bản, thư mục dự án làm việc cục bộ của nó giờ đây được liên kết với đối tượng tương ứng trong VCS repository, như được biểu thị bằng biểu tượng liên kết đi kèm với các mục thư mục dự án trong Storage Manager panel. Để xác nhận vị trí của thư mục được liên kết và repository, hãy nhấp chuột phải vào bất kỳ mục tệp nào trong panel và chọn tùy chọn VCS Properties (không khả dụng khi dùng Git). Hộp thoại Properties sau đây bao gồm các đường dẫn của những vị trí được liên kết và thông tin về revision VCS mới nhất.
Tệp được biểu thị bằng biểu tượng liên kết và Properties panel tương ứng chứa thông tin về revision VCS mới nhất
Hộp thoại Properties cung cấp các thông tin sau (thông tin này chỉ để xem; không được phép chỉnh sửa):
- Path - đường dẫn đến tài liệu cục bộ trong thư mục làm việc của bạn).
- URL - URL cho vị trí của tài liệu trong VCS repository.
- Repository Root - gốc repository.
- Repository UUID - UUID của repository.
- Revision - revision hiện tại của tài liệu trong thư mục làm việc cục bộ của bạn.
- Last Change Author - tác giả của thay đổi gần nhất.
- Last Change Revision - revision của thay đổi gần nhất
- Last Change Time - ngày và giờ của thay đổi gần nhất.
- Conflicted - tài liệu có xung đột hay không.
Nhờ liên kết VCS đã được đăng ký, hệ thống kiểm soát phiên bản có thể giám sát và phát hiện mọi khác biệt giữa các tệp trong thư mục dự án cục bộ và các đối tượng tương ứng của chúng trong thư mục VCS repository. Khi phát hiện có sự khác biệt, chẳng hạn khi một tệp thiết kế đã được chỉnh sửa và lưu trong Altium Designer, hệ thống kiểm soát phiên bản sẽ thay đổi trạng thái của tệp cục bộ thành Modified và Altium Designer sẽ cung cấp tập lệnh VCS phù hợp trong menu chuột phải ở các panel.
Commit các thay đổi
Sau khi một tệp tài liệu dự án được chỉnh sửa và lưu trong Altium Designer, nó sẽ được đánh dấu là Modified, và được biểu thị như vậy trong cả hai panel Projects và Storage Manager. Để commit những thay đổi đó như một revision mới trong VCS, hãy nhấp chuột phải vào mục tệp trong panel và chọn lệnh Commit từ menu ngữ cảnh hoặc chọn lệnh Project » History & Version Control » Commit từ các menu chính.
Lệnh Commit
Lệnh Commit Whole Project cũng có thể được sử dụng, lệnh này sẽ commit tất cả các tệp đã sửa đổi trong dự án. Khi commit toàn bộ dự án, hộp thoại Commit to Version Control sẽ mở ra.

Hộp thoại Commit to Version Control
Options and Controls of the Commit to Version Control Dialog
Khung trên
Khung trên liệt kê tất cả các tệp trong dự án đã chọn và cho biết chúng có nằm trong VCS hay không. Thông tin liên quan bổ sung cũng được liệt kê, bao gồm việc một tệp có được đánh dấu để thêm hoặc xóa hay không. Người thiết kế có thể chọn các tệp để commit vào kiểm soát phiên bản. Cột Path hiển thị đường dẫn của từng tệp, cột Status hiển thị trạng thái hiện tại của tệp. Phần này của hộp thoại cũng có một menu chuột phải nhỏ với các tùy chọn sau:
- Select All - Nhấp để chọn tất cả các tệp được liệt kê trong hộp thoại. Các tệp đã chọn sẽ được thêm vào VCS.
- Select None - Nhấp để bỏ chọn tất cả các tệp được liệt kê trong hộp thoại. Những tệp này sẽ không được thêm vào VCS.
- Select Project Documents - Nhấp để chỉ chọn các tài liệu dự án. Chỉ các tệp được chọn mới được thêm vào VCS.
Khung dưới
- Comment - Người thiết kế có thể viết nhận xét trước khi commit các tệp vào kiểm soát phiên bản trong hộp văn bản này.
- Commit and Push - lệnh này được sử dụng để check-in các sửa đổi được thực hiện đối với bản sao làm việc của (các) tệp đã chọn (trong vùng Files của panel Storage Manager) vào VCS repository của bạn và đẩy các cập nhật dự án lên máy chủ. Các tệp đã sửa đổi được phân biệt bằng trạng thái Modified.
- Commit - sử dụng danh sách thả xuống để truy cập nút Commit, cho phép bạn check-in các sửa đổi được thực hiện đối với bản sao làm việc của (các) tệp đã chọn (trong vùng Files của Storage Manager panel) vào VCS repository của bạn. Các tệp đã sửa đổi được phân biệt bằng trạng thái Modified.
-
When using Subversion (SVN): Quy trình commit sẽ sao chép tệp đã cập nhật từ thư mục cục bộ vào repository, tăng số revision của mục VCS và đặt lại trạng thái của tệp thành
No Modification -
When using Git: Quy trình commit cập nhật VCS của working repository cục bộ đồng thời tăng số revision của mục nhập và đặt trạng thái tệp thành
Ahead of ServerBạn có thể tiếp tục chỉnh sửa, lưu và commit các tệp trong working repository hoặc xác nhận các thay đổi mới bằng lệnh Push để cập nhật remote Git repository – khi đó trạng thái tệp sẽ trở vềNo Modification
Xem bảng Storage Manager để theo dõi chuỗi hành động trong mục VCS Revisions, trong đó sẽ bao gồm việc tạo một revision VCS mới (với số revision tăng thêm) cho tệp đó – trong trường hợp này là Revision 3 cùng với chú thích đã thêm vào. Biểu tượng
cho biết revision mới nhất và cũng là revision hiện tại của tệp đang được chọn, hay theo thuật ngữ kiểm soát phiên bản là revision Head.
Mục VCS Revisions của bảng Storage Manager panel
Để có cái nhìn kết hợp giữa các mục revision và lịch sử sự kiện, hãy chuyển sang chế độ xem Timeline duy nhất bằng cách chọn Switch to Combined View từ menu ngữ cảnh chuột phải.
Check out từ Version Control
Như đã nêu ở trên, một dự án cục bộ đã được thêm vào Version Control có thể được chỉnh sửa bằng Altium Designer từ thư mục cục bộ của dự án, và sau đó các thay đổi sẽ được cập nhật vào kho lưu trữ VCS. Thư mục cục bộ và thư mục kho lưu trữ được liên kết với nhau và cuối cùng được đồng bộ bởi VCS.
Một người dùng khác, không có quyền truy cập vào dự án từ thư mục nguồn của nó (nằm cục bộ trên PC của bạn), có thể dùng quy trình Clone (Git) hoặc Check Out (SVN) để lấy bản sao riêng của các tệp từ kho lưu trữ VCS đang lưu trữ dự án. Tất cả người dùng muốn cộng tác trên thiết kế dự án sẽ cần kết nối đến kho lưu trữ thiết kế dùng chung đó, vốn thường được thiết lập để có thể truy cập qua mạng nội bộ hoặc từ máy chủ.
Thư mục dự án trong kho lưu trữ được chọn cùng các tệp cấu thành của nó sẽ được check out vào thư mục cục bộ đã chỉ định và được mở trong Altium Designer. Lưu ý rằng thư mục cục bộ là thư mục được định nghĩa là thư mục checkout cho kho lưu trữ đã chọn, và dự án được check out sau đó sẽ được liên kết với đối tượng tương ứng của nó trong kho lưu trữ VCS. Liên kết VCS hướng dẫn hệ thống kiểm soát phiên bản giám sát và phát hiện mọi khác biệt giữa các tệp trong thư mục checkout cục bộ và các tệp tương ứng của chúng trong thư mục kho lưu trữ VCS.
Commit các thay đổi khi hoàn tất chỉnh sửa tệp; việc này sẽ đồng bộ các tệp trong kho lưu trữ thiết kế để khớp với các tệp trong thư mục checkout, đồng thời tạo một revision VCS mới.
Checkout so với Open Project
Khi một dự án local đã được thêm vào hệ thống kiểm soát phiên bản thì thực tế có hai cách để chỉnh sửa và cập nhật nó lên VCS:
-
Bằng cách mở dự án cục bộ (File » Open Project) trong Altium Designer, rồi commit các thay đổi đã lưu lên kho lưu trữ VCS. Trong trường hợp này, thư mục dự án cục bộ và bản đối chiếu của nó trong kho lưu trữ được liên kết bởi VCS.
-
Bằng cách check out dự án (File » Check Out) từ kho lưu trữ VCS, rồi commit các thay đổi đã lưu được thực hiện trong Altium Designer trở lại kho lưu trữ. Trong trường hợp này, dự án trong thư mục checkout được chỉ định và bản đối chiếu của nó trong kho lưu trữ được liên kết bởi VCS.
Dự án cục bộ là nguồn, hay điểm gốc, của dự án VCS đang được chia sẻ với những người dùng khác. Tùy theo cách bạn muốn làm việc, phiên bản nguồn cục bộ này có thể được xóa hoặc khóa như một nguồn dự án lưu trữ, và sau đó dùng phương pháp Check Out để thực hiện các chỉnh sửa tiếp theo. Hoặc bạn cũng có thể tiếp tục mở và làm việc trên các tệp dự án từ thư mục 'nguồn' cục bộ (Open Project).
Cách tốt nhất là chỉ bám theo một phương pháp (khuyến nghị là check out), vì hai tùy chọn này xử lý thư mục làm việc ở các vị trí khác nhau – thư mục dự án nguồn cục bộ hoặc thư mục checkout VCS được chỉ định. Ngược lại, nếu dùng cả hai phương pháp thì sẽ có nhiều bản sao hoạt động của cùng một dự án trên PC cục bộ. Tuy nhiên, nếu các phiên bản này đều được Commit cẩn thận vào kho lưu trữ VCS tập trung sau mỗi lần chỉnh sửa, thì kho lưu trữ sẽ luôn giữ revision mới nhất của dự án như mong muốn.
Cũng lưu ý rằng sau khi một dự án đã được check out lần đầu từ kho lưu trữ VCS, nó sẽ tồn tại cục bộ và có thể được mở lại trực tiếp từ thư mục checkout (File » Open Project). Trong trường hợp này, lại có lựa chọn check out dự án từ VCS hoặc mở phiên bản cục bộ; tuy nhiên, chỉ luôn có một bản sao cục bộ duy nhất. Xét theo thực tế vận hành của VCS, hai phương pháp này rất giống nhau nhưng sẽ hành xử khác nhau trong một số trường hợp – chẳng hạn khi thiếu một tệp cục bộ, khi đó quy trình check out sẽ khôi phục tệp đó, còn lệnh Open Project sẽ loại bỏ nó khỏi Project.
Revision trong Version Control
Trong quá trình làm việc với các tài liệu thiết kế trong Altium Designer đang được đặt dưới Version Control, các tệp thiết kế đã được truy cập từ kho lưu trữ VCS trung tâm (dùng chung) sẽ đại diện cho revision mới nhất của các tệp đó. Khi các chỉnh sửa cục bộ hoàn tất và đã được commit (hoặc với Git là push) trở lại kho lưu trữ VCS dùng chung, thì các phiên bản tệp này trở thành các revision mới nhất.
Do đó, chuỗi thao tác thông thường gồm check out, chỉnh sửa, lưu và commit (và Push với Git) sẽ dần dần bổ sung các revision tệp mới vào VCS trung tâm khi thiết kế dự án được phát triển. Tuy nhiên, khi một dự án đang được nhiều nhà thiết kế cùng phát triển, các revision mới có thể được commit vào kho lưu trữ trung tâm (dùng chung) bất kỳ lúc nào, bởi bất kỳ nhà thiết kế nào.
Revision lỗi thời
Sự tương tác giữa nhiều nhà thiết kế và kho lưu trữ trung tâm có thể biểu hiện theo nhiều cách, một trong số đó là dự án đang mở cục bộ không còn là revision mới nhất nữa – một dự án được check out từ kho lưu trữ hoặc được mở từ thư mục làm việc cục bộ sẽ có trạng thái Out of date trong bảng Projects.
Tệp được gắn nhãn Out of fate
Trong trường hợp này, một người dùng khác đã chỉnh sửa và commit cùng dự án đó vào kho lưu trữ kể từ lần chỉnh sửa cục bộ gần nhất. Ví dụ, người dùng cục bộ Barry đang làm việc trên dự án và đã commit, giả sử là Revision 14, nhưng một người dùng khác Harold đã commit Revision 15 sau thời điểm đó, như được chỉ ra trong bảng Storage Manager bên dưới. Vì VCS phát hiện sự khác biệt giữa một tệp trong thư mục làm việc cục bộ và tệp tương ứng của nó trong kho lưu trữ (trong trường hợp này là mới hơn), hệ thống coi revision local mới nhất (được biểu thị bằng biểu tượng là đã lỗi thời.
Các trạng thái revision khác nhau trong Storage Manager
Tình huống này được khắc phục bằng cách cập nhật các tệp cục bộ để khớp với các tệp trong kho lưu trữ VCS trung tâm bằng lệnh Update từ menu ngữ cảnh chuột phải của bảng Projects hoặc Storage Manager. Khi đó hai phiên bản tệp sẽ được đồng bộ, với phiên bản cục bộ (dành cho người dùng Barry) được cập nhật lên revision mới nhất – trong ví dụ này là Revision 15. Lưu ý rằng nếu bạn Save một tệp trong khi nó được gắn trạng thái Out of date thì sẽ tạo ra tình huống VCS Conflict, trong đó VCS phát hiện rằng một revision cũ hơn của tệp đã được cập nhật trong thư mục làm việc.
Kho lưu trữ trung tâm và revision cục bộ trong Storage Manager
Bạn cũng có thể chọn lệnh Update Whole Project để truy cập hộp thoại Update from Version Control cho phép bạn chọn các tệp sẽ được check out từ kho lưu trữ dùng chung. Tất cả tài liệu trong dự án đang lỗi thời hoặc có xung đột sẽ được hiển thị trong hộp thoại. Bạn có thể chọn các tài liệu cụ thể để cập nhật hoặc chọn cập nhật tất cả cùng lúc. Các tài liệu được chọn sẽ được cập nhật từ kho lưu trữ và tất cả tài liệu lỗi thời được chọn theo mặc định. Tất cả tài liệu đã chọn sẽ được cập nhật lên phiên bản mới nhất trong kho lưu trữ.

Hộp thoại Update from Version Control
Cột Path hiển thị thư mục tệp. Cột Status hiển thị trạng thái hiện tại của tệp. Nếu trạng thái của tệp được hiển thị là Conflict, khi nhấp OK để cập nhật tệp sẽ xuất hiện hộp thoại xác nhận. Nhấp OK để cập nhật lên phiên bản mới nhất trong kho lưu trữ hoặc Cancel để thoát và lưu các thay đổi vào phiên bản hiện đang có trong kho lưu trữ.
Xung đột revision
Sự tương tác giữa nhiều nhà thiết kế và kho lưu trữ trung tâm cũng có thể tạo ra tình huống cùng một tệp đã được hai người dùng Altium Designer chỉnh sửa và lưu cục bộ, và một người trong số họ đã commit các thay đổi đó.
Điều này có nghĩa là chuỗi bước của một nhà thiết kế (check out, chỉnh sửa, lưu, commit) đã đan xen với chuỗi bước của một nhà thiết kế khác, nên một tệp mà người dùng đã check out từ kho lưu trữ để chỉnh sửa có thể không remain với revision mới nhất trong khi đang được xử lý – một người dùng khác đã cập nhật revision trong lúc đó. Ai commit các chỉnh sửa lên kho lưu trữ trước trong trường hợp này sẽ chiếm ưu thế bằng cách tạo ra revision mới; còn người dùng khác đã chỉnh sửa và lưu cùng tệp đó sẽ gặp tình huống Conflict – được biểu thị bằng biểu tượng
.
Ví dụ về Revision Conflict
Từ góc nhìn của VCS, vốn so sánh các tệp trong thư mục làm việc với các tệp trong kho lưu trữ, Conflict biểu thị tình trạng một revision lỗi thời của tệp trong thư mục làm việc đã được chỉnh sửa và lưu.
Git VCS Revisions trong bảng Storage Manager
Có một số tùy chọn lệnh được truy cập từ menu chuột phải History & Version Control của bảng Projects, menu chính Project » History & Version Control và bảng Storage Manager có thể được dùng khi một tệp có trạng thái Conflict:
-
Commit – tùy chọn này sẽ kích hoạt lỗi Subversion, vì commit revision đã chỉnh sửa cục bộ (ví dụ,
Revision 15) sẽ ghi đè revision mới hơn (Revision 16) đã được người dùng khác commit trước đó. -
Update – tùy chọn này sẽ cập nhật revision tệp cục bộ lên phiên bản mới nhất từ kho lưu trữ trung tâm (
Revision 16), do đó làm mất mọi thay đổi cục bộ bạn đã thực hiện trênRevision 15. -
Resolve Conflict – tùy chọn này sẽ loại bỏ các thay đổi đã được commit vào kho lưu trữ kể từ lần cập nhật gần nhất của bạn. Sau khi khởi chạy lệnh, một hộp thoại xác nhận sẽ xuất hiện - nhấp Yes để tiếp tục. Tệp dự án trong thư mục làm việc của bạn sẽ được cập nhật lên revision mới nhất đã được người dùng khác check in vào kho lưu trữ, nhưng trình soạn thảo vẫn sẽ giữ lại các thay đổi mà bạn đã thực hiện trên revision trước đó. Do đó, tệp cục bộ sẽ có trạng thái Modified, cho phép bạn commit các thay đổi đó thành một revision mới trong kho lưu trữ - bằng lệnh Commit hoặc lệnh Commit Whole Project. Sau khi bạn đã commit tệp dự án, người dùng còn lại sẽ thấy (các) tệp ở trạng thái Out of date, vì bạn đã tạo ra một revision mới hơn trong kho lưu trữ.
Tùy chọn này chỉ được khuyến nghị khi tệp text đang ở trạng thái xung đột vì hệ thống Subversion sẽ cố gắng Merge các khác biệt vào tệp cục bộ. Quá trình đó có thể làm hỏng các loại tệp khác như tài liệu thiết kế, vì vậy tốt nhất nên giải quyết Conflict bằng cách Update lên revision nguồn mới nhất hoặc Revert các thay đổi cục bộ.
-
Revert – Tùy chọn này sẽ làm mất (hoàn tác) các thay đổi cục bộ, đưa tệp cục bộ trở về revision cơ sở của nó – ở đây là
Revision 15. Do đó, xung đột revision được giải quyết, nhưng sau đó tệp sẽ bị gắn cờOut of datevì trong kho lưu trữ đang tồn tại revision mới hơn (Revision 16).
So sánh Revision
Một lợi thế rất hữu ích khi làm việc với Version Control là khả năng so sánh các revision lịch sử của các tệp thiết kế; tính năng này được cung cấp bởi Difference Comparator tích hợp sẵn của Altium Designer và được truy cập từ bảng Storage Manager. Khi dùng cùng với bảng Differences, có thể thực hiện so sánh logic hoặc đồ họa giữa các revision VCS trong khi tương tác khám phá các đối tượng bị ảnh hưởng. Có thể so sánh cả revision Schematic và PCB.
► Xem trang Differences panel để biết thêm thông tin về cách điều hướng các khác biệt.
Để khởi tạo việc so sánh giữa hai revision, hãy chọn cả hai mục (dùng phương pháp Ctrl+click tiêu chuẩn) trong danh sách Storage Manager của bảng VCS Revisions, sau đó chọn lệnh Compare từ menu ngữ cảnh chuột phải của bảng.
Lệnh Compare trong bảng Storage Manager
Cả hai revision tệp sẽ được mở ở chế độ chia đôi màn hình, nơi chúng có thể được so sánh trực quan. Các khác biệt được hiển thị sẽ được quyết định bởi các tùy chọn được chọn cho các kiểu so sánh Physical trong Comparator tab của hộp thoại Options for Project – Project » Project Options.
Chìa khóa để xác định vị trí và xem các khác biệt so sánh nằm ở bảng Differences, bảng này cung cấp danh sách có thể chọn của các khác biệt logic hoặc đồ họa giữa các tài liệu. Các mục được liệt kê trong bảng cho từng revision tài liệu tương tác với trình soạn thảo, cho phép một khác biệt được phát hiện (chẳng hạn như một đối tượng đã di chuyển) được làm nổi bật bằng đồ họa khi được chọn.
Việc xác định vị trí và xem các khác biệt so sánh nằm trong bảng Differences
Chức năng Compare cũng áp dụng cho các revision của tài liệu PCB, cũng như revision của tài liệu Schematic và tài liệu dựa trên văn bản.
- Đối với tài liệu schematic hoặc PCB (thiết kế hoặc thư viện), một phép so sánh đồ họa sẽ được thực hiện và các khác biệt phát hiện được sẽ được liệt kê trong bảng Differences. Khi hai phiên bản của tài liệu được mở cạnh nhau trong cửa sổ trình soạn thảo thiết kế, bạn có thể xem xét các khác biệt dưới dạng đồ họa. Nhấp vào thư mục cấp cao nhất của một khác biệt được phát hiện sẽ làm nổi bật khác biệt đó trên cả hai tài liệu cùng lúc.
- Đối với các tài liệu ASCII dựa trên văn bản, hộp thoại CompareForm sẽ xuất hiện, hiển thị dạng 'diff' đồ họa của hai phiên bản tài liệu. Các tài liệu được chọn được hiển thị cạnh nhau. Hộp thoại này chỉ dùng để so sánh - không thể sửa đổi tài liệu đã tải. Thông qua mã màu, hộp thoại làm nổi bật các khác biệt khác nhau giữa hai phiên bản tài liệu - các dòng được thêm (hồng), các dòng được sửa đổi (xanh lá) và các dòng bị xóa (xanh dương). Phần tóm tắt các thay đổi và chú giải mã màu được trình bày ở góc dưới bên trái của hộp thoại.
Chức năng Compare
Lệnh Compare có thể được áp dụng cho bất kỳ cặp revision nào, bao gồm giữa revision cục bộ hiện tại (trong thư mục làm việc) và revision mới hơn trong kho lưu trữ. Trong tình huống này, revision cục bộ mới nhất được hiển thị trong bảng Storage Manager là Out of date nhưng vẫn có thể được so sánh với một revision mới hơn đã được người dùng khác thêm vào kho lưu trữ.
Revision cục bộ được hiển thị trong bảng Storage Manager là Out of date
Cách tiếp cận này cho phép bạn xem trước bằng đồ họa các thay đổi sẽ được áp dụng khi cập nhật lên revision mới. Trong hình ví dụ ở trên, revision cục bộ hiện tại (được biểu thị bằng biểu tượng là Revision 19 nhưng một người dùng khác đã commit một revision mới vào kho lưu trữ (Revision 22). Việc khởi tạo so sánh trực quan giữa Revision 19 và Revision 22 cho phép bạn đưa ra quyết định có cơ sở về việc chấp nhận các thay đổi mới từ kho lưu trữ hay không, và kéo theo đó là liệu bạn sẽ áp dụng lệnh Update hay bác bỏ bằng cách tạo ra điều kiện Conflict – through lưu lại tệp cục bộ và giải quyết xung đột theo hướng ưu tiên phiên bản cục bộ của bạn.
Thuật ngữ Version Control
| Thuật ngữ | Ý nghĩa |
|---|---|
| Base | Revision trong kho lưu trữ mà bạn đã check out để làm Working Copy cục bộ của mình. Còn được gọi là revision đã check out. |
Check-in |
Lưu bản sao làm việc của tệp của bạn vào kho lưu trữ. Trong Altium Designer được gọi là Commit. |
Check-out |
Lấy một bản sao của tệp từ kho lưu trữ VCS vào thư mục làm việc. Đây thường là revision mới nhất của tệp, nhưng cũng có thể check out mọi revision trước đó. Tùy theo VCS, tệp có thể chỉ được đánh dấu là đã check out, hoặc được check out độc quyền (khóa). |
Clone |
Một lệnh Git sao chép (clone) kho lưu trữ Git từ xa thành một kho lưu trữ Git làm việc trong thư mục cục bộ, đồng thời tự động check out phiên bản HEAD (mới nhất) vào thư mục đó. Kho lưu trữ cục bộ bao gồm tham chiếu liên kết tới kho lưu trữ từ xa (trong trường hợp này là |
Commit |
Lưu bản sao làm việc của tệp trở lại kho lưu trữ. Trong một số hệ thống kiểm soát phiên bản, thao tác này được gọi là Check-in. Trong Altium Design Software, lệnh Save thông thường sẽ lưu tệp đã chỉnh sửa vào thư mục làm việc, trong khi Commit sẽ lưu tệp trong thư mục đó vào kho lưu trữ dưới dạng revision (phiên bản) mới. |
Conflict |
Tình huống khi hai người dùng Altium Designer cố gắng commit các thay đổi ảnh hưởng đến cùng một vùng của cùng một tệp. Những xung đột này phải được giải quyết bằng công cụ Merge, thủ công, hoặc bằng cách xác định phiên bản nào sẽ chiếm ưu thế (trở thành revision mới). |
Database |
Nơi lưu trữ chính của tất cả các tệp được đặt dưới kiểm soát phiên bản (hoặc mã nguồn) - trong thực tế còn được gọi là Repository . |
Git |
Git là một hệ thống kiểm soát phiên bản mã nguồn mở. Altium Designer tích hợp các khả năng của Git (thông qua tiện ích mở rộng VCS Provider - Git), cho phép các revision được theo dõi và truy cập trực tiếp từ các bảng Storage Manager và Projects. |
Head |
Revision mới nhất đã được commit vào hệ thống kiểm soát phiên bản. |
Log message |
Một chú thích về các thay đổi được thực hiện đối với một revision khi nó được check in (commit) trở lại kho lưu trữ. Các thông điệp log có thể được dùng như bản tóm tắt tiến độ thay đổi trong một tệp. |
Project |
Nhiều hệ thống kiểm soát phiên bản hỗ trợ khái niệm dự án. Một dự án VCS là một tập hợp các tệp liên quan có thể được check in/check out như một nhóm. VCS cũng có thể hỗ trợ các tính năng kiểu dự án khác, chẳng hạn như đặt số phiên bản cho tất cả các tệp trong một dự án. Khái niệm này khác với khái niệm dự án trong Altium Designer, vốn có thể được thêm vào Version Control bằng lệnh Add Project Folder to Version Control command. |
Push |
Dùng để cập nhật kho Git từ xa bằng (các) tệp trong kho làm việc cục bộ của nó – đồng bộ hóa kho cục bộ và kho từ xa. Lệnh này khả dụng khi một tệp trong kho Git cục bộ mới hơn tệp tương ứng của nó trong kho Git từ xa. Về mặt khái niệm, đây là lệnh bổ sung cho Git Pull. |
Repository |
Nơi lưu trữ chính của tất cả các tệp đang được kiểm soát phiên bản (hoặc mã nguồn) - cũng có thể được gọi là Database. |
Revision |
Một thay đổi đã được commit trong lịch sử của một tệp hoặc một tập hợp tệp. Đây là tham chiếu chữ và số do VCS cung cấp để theo dõi các bản hiệu đính (phiên bản) khác nhau mà nó đang lưu giữ của tệp. |
Sandbox |
Thư mục nơi các tệp được check out từ kho lưu trữ để có thể làm việc trên đó - còn được gọi là Working Folder. Các tệp được check out từ Altium Design Software sẽ tự động được tải. |
| SVN | Subversion là một hệ thống kiểm soát phiên bản mã nguồn mở. Altium Designer tích hợp các khả năng SVN (thông qua tiện ích mở rộng VCS Provider - SVN), cho phép theo dõi trực tiếp và truy cập các lần sửa đổi từ các bảng Storage Manager và Projects. |
Update |
Hành động kiểm tra và 'kéo về' các thay đổi từ phiên bản trong kho lưu trữ của một tệp vào bản sao làm việc (đối ngược với Commit, hoặc Check-in). Quá trình hợp nhất mọi khác biệt yêu cầu một công cụ Merge, hoặc cập nhật thủ công. |
VCS |
Version Control System: Thuật ngữ chung áp dụng cho bất kỳ công cụ nào có khả năng quản lý lịch sử phiên bản tệp và truy xuất tệp. |
Version |
Thuật ngữ version thường được dùng để chỉ số tham chiếu bên ngoài do con người gán cho các tệp được kiểm soát, hoặc đầu ra của chúng (chẳng hạn như trong trường hợp mã nguồn). Trong hầu hết trường hợp, điều này được xem là một revision. |
Working Copy |
Bản sao 'cục bộ' của một tệp mà các thay đổi được thực hiện trên đó - thường nằm trong Working Folder. |
Working Folder |
Thư mục mà các tệp được check out từ kho lưu trữ vào để có thể làm việc trên đó – với Git, đây là kho làm việc cục bộ. Các tệp được check out từ Altium Designer sẽ tự động được tải. |
Tham khảo
- Trang web SVN: http://subversion.apache.org/
- Sổ tay trực tuyến SVN: http://svnbook.red-bean.com/
- Trang chủ dự án SharpSVN: https://sharpsvn.open.collab.net
- Trang web Git: https://git-scm.com/
- Tài liệu trực tuyến Git: https://git-scm.com/doc
- Các ứng dụng khách Tortoise: http://tortoisesvn.net và https://tortoisegit.org/
- Hướng dẫn Source Control, của Eric Sink: http://www.ericsink.com/scm/source_control.html