버전 관리 하에서 프로젝트를 다루는 가장 고급 방식은 연결된 Workspace의 기능을 활용하는 것입니다. Workspace는 프로젝트를 위한 고급 구성(construct)을 제공하며, 이를 통해 워크플로와 저장 방식이 단순화되고 협업 기능이 강화되는 등 다양한 이점이 있습니다.
Workspace의 대상 VCS 리포지토리는 Workspace와 Altium Designer(로그인 시) 모두에 긴밀하게 통합되어 있어, 별도의 VCS 리포지토리를 설정하고 구성할 필요가 없습니다. 사용자 접근 권한, 리포지토리 콘텐츠, 프로젝트 상태는 Workspace 브라우저 인터페이스를 통해 관리할 수 있습니다. 연결된 Workspace의 내부 VCS를 사용 중이라면, 이 페이지의 내용은 해당되지 않습니다.
이 문서는 연결된 Workspace에 호스팅되지 않는 리포지토리를 사용하는 ‘외부’ 버전 관리의 기본 접근 방식을 설명합니다. 여기에는 로컬에서 사용 가능한 버전 관리 리포지토리, 연결된 네트워크를 통한 리포지토리, 또는 전용 VCS 서버 제품의 리포지토리가 포함됩니다. 외부 VCS를 사용 중이라면 계속 읽어보세요.
전자 설계 작성 및 편집 환경의 가장 큰 강점 중 하나는 파일을 쉽게 생성하고 수정할 수 있다는 점입니다. 이 기능 덕분에 아이디어를 빠르게 기록하고 탐색하며 발전시킬 수 있지만, 동시에 소스 코드나 전자 설계 데이터 같은 중요한 파일에 가해진 변경 사항을 추적하기가 어려워질 수도 있습니다.
파일에 가해진 변경 사항을 추적해야 하는 필요성과, 전자 형태로 캡처된 소스를 체계적으로 관리할 수 있는 솔루션에 대한 필요가 결합되면서 버전 관리 시스템(Version Control Systems, VCS)이 등장했습니다. 버전 관리 시스템은 파일의 다양한 버전에 대한 이력을 유지할 수 있을 뿐 아니라, 해당 파일의 어떤 리비전이든 열 수 있고, 파일의 두 버전 간 변경 사항을 비교하는 기능도 지원하는 소프트웨어 도구입니다. VCS는 일반적으로 로컬 운영체제(OS)와 통합되어 폴더와 파일에 대한 추가 버전 관리 기능 및 작업을 제공합니다.
버전 관리 시스템은 파일을 생성하는 작성/편집 환경과 완전히 독립적으로 운영될 수 있습니다. 보통 리포지토리(repository)라고 하는 중앙 저장소에 파일을 Add한 뒤 Commit할 수 있는 인터페이스, 리포지토리에서 작업 폴더로 파일을 복사하는 Checkout 기능, 변경 사항을 리포지토리에 다시 반영하는 Commit 기능, 변경에 대한 정보를 기록하는 방법 등 다양한 기능을 제공합니다.
이러한 기능은 Tortoise client 같은 Windows 셸 확장에도 포함되어 있으며, Altium Designer 자체에도 포함되어 있습니다. OS 파일 시스템에 접근하지 않고도 Altium Designer 환경 내에서 VCS 작업을 수행할 수 있습니다.
버전 관리 시스템에서 사용되는 용어를 이해해 두면 도움이 됩니다. 사용 가능한 시스템은 많지만, 기능을 설명하는 데 사용하는 용어는 대체로 유사합니다.
버전 관리 핵심
Altium Designer는 Subversion(SVN)과 Git 버전 관리 시스템(VCS)을 지원합니다. 이들 시스템을 내부적으로 지원하므로, Altium Designer 내에서 Commit, Update 등 일반적인 SVN/Git 파일 처리 명령에 접근할 수 있으며, SVN 리포지토리를 생성하는 기능 같은 추가 Subversion 기능도 제공합니다. 또한 회로도 및 PCB 비교 기능과 통합되어, 회로도 또는 PCB 문서의 두 리비전 간 차이를 빠르게 비교하고 식별할 수 있고, PCB 설계의 경우 동시 리비전 충돌을 해결하는 데도 도움이 됩니다.
버전 관리 시스템(VCS)으로 작업하는 기본 방식은 리포지토리에서 작업하려는 프로젝트 파일의 사본에 접근한 다음, Altium Designer에서 파일을 편집하고 수정된 파일을 리포지토리에 다시 ‘커밋(commit)’하는 것입니다. 리포지토리와의 상호작용은 버전 관리 시스템 인터페이스를 통해 이루어지며, Altium Designer는 이를 Storage Manager 패널 과 Projects 패널에 내장해 두었습니다.
버전 관리 시스템 동작의 핵심은, 작업 폴더를 통해 리포지토리에서 가져온 파일의 상태를 모니터링하여 어떤 리비전을 작업 중인지, 그리고 수정되었는지를 추적한다는 점입니다. 결과는 같지만, 리포지토리와 작업 파일 구성은 버전 관리 시스템 유형(Git 또는 SVN)에 따라 다릅니다.
Git VCS
아래 그림은 설계 파일 리비전(리비전 5까지) 시퀀스를 보관하는 원격 Git 리포지토리 공유(Remote Git repository share)의 개념을 보여줍니다. 해당 콘텐츠는 로컬 작업 Git 리포지토리로 복사되며, 일반적으로 원격 리포지토리를 Clone하거나 원격 데이터를 작업 리포지토리로 Pull하여 가져옵니다. 작업 리포지토리의 파일을 Altium Designer 환경에서 열면, Altium Designer는 프로젝트 파일이 Git 버전 관리 하에 있음을 인식하고, 현재 버전 관리 상태를 Storage Manager 및 Projects 패널 모두에 표시합니다.
► 자세한 내용은 Git-based Version Control 페이지를 참조하세요.
Subversion VCS
아래 그림은 설계 파일 리비전(리비전 5까지) 시퀀스를 보관하는 Subversion 리포지토리의 개념을 보여주며, 최신 사본이 작업 폴더로 체크아웃(File » Check Out)되어 있습니다. 작업 폴더의 파일을 Altium Designer 환경에서 열면, Altium Designer는 프로젝트 파일이 SVN 버전 관리 하에 있음을 인식하고, 현재 버전 관리 상태를 Storage Manager 및 Projects 패널 모두에 표시합니다.
► 자세한 내용은 SVN-based Version Control 페이지를 참조하세요.
위의 두 VCS 시스템 모두에서, 소스 리포지토리와 작업 위치 간의 링크는 후자의 VCS 데이터베이스( .svn 또는 .git 시스템 하위 폴더)에 참조로 저장됩니다.
VCS 작업 파일이 Altium Designer에서 열려 있을 때 Storage Manager 패널(및 Projects 패널)의 우클릭 메뉴를 통해, 변경된 파일을 중앙 리포지토리(SVN) 또는 작업 리포지토리(Git)에 커밋하는 등의 표준 VCS 작업을 수행할 수 있습니다.
버전 관리 접근
Altium Designer에서는 Projects 및 Storage Manager 패널을 통해 VCS 관련 작업을 수행할 수 있으며, 특히 Storage Manager 패널은 추가 VCS 명령과 정보에 대한 직접 접근을 제공합니다. 패널은 Altium Designer에서 열려 있는 프로젝트 문서와 그에 연관된 VCS 상태로 채워집니다.
패널은 작업 공간 오른쪽 하단의
버튼 메뉴 또는 메인 View » Panels 메뉴에서 열 수 있습니다.
Projects 패널
Projects 패널은 현재 Altium Designer에서 열려 있는 모든 프로젝트와, 그 구성 문서 및 각 파일에 대한 관련 버전 관리 상태를 표시합니다.
패널의 VCS 파일 상태는 버전 관리 시스템이 감지한 특정 파일 상태에 대응하는 일련의 아이콘으로 표시됩니다. 각 파일의 상태는 일반적으로 연결된 리포지토리에서 버전 관리 하에 존재하는 동일 파일과 비교한 상대적 상태를 의미합니다. Projects 패널의 VCS 명령은 패널 우클릭 컨텍스트 메뉴의 Version Control 옵션에서 접근합니다.
Projects 패널에 표시되는 버전 관리 아이콘
패널의 VCS 상태 아이콘은 Preferences 대화상자의 System – Projects Panel 페이지에서 (General 아래) Show VCS status 옵션이 체크되어 있을 때만 표시됩니다. 변경 사항을 적용하려면 재시작이 필요할 수 있습니다.
► 자세한 내용은 Projects panel 페이지를 참조하세요.
Storage Manager 패널
Storage Manager 패널은 파일 저장 관점에서 활성 문서를 풍부하게 보여주며, 로컬 문서 히스토리 기능과 버전 관리 상태/명령에 대한 접근을 제공합니다.
패널의 VCS 파일 상태는 버전 관리 시스템이 감지한 특정 파일 상태에 대응하는 일련의 설명과 매칭 아이콘으로 표시됩니다. 각 파일의 상태는 일반적으로 연결된 리포지토리에서 버전 관리 하에 존재하는 동일 파일과 비교한 상대적 상태를 의미합니다.
Storage Manager 패널
VCS 명령은 Storage Manager 패널의 우클릭 컨텍스트 메뉴에서 접근합니다. 특정 파일에 대해 VCS 작업을 수행하려면, 패널에서 해당 항목을 우클릭한 뒤 원하는 명령(예: Commit, Update, Resolve conflict 등)을 선택하세요.
선택한 파일의 리비전 히스토리와 로컬 문서 히스토리는 패널 하단 섹션에서 확인할 수 있으며, 우클릭 옵션에서 'classic view'로 전환하면 전체 이벤트 타임라인으로도 볼 수 있습니다 – Switch to Classic View . 표시되는 리비전 번호는 VCS 커밋마다 증가하며, 첫 번째 리비전(리비전 1)은 파일을 추가하기 전에 VCS 프로젝트 폴더가 생성되는 시점에 해당합니다.
► 자세한 내용은 Storage Manager panel 페이지를 참조하세요.
버전 관리 상태
Projects 및 Storage Manager 패널 모두에서, 버전 관리 하에 있는 각 파일의 현재 VCS 상태가 패널의 해당 항목과 함께 표시됩니다.
버전 관리 시스템은 본질적으로 작업 폴더의 파일을 설계 리포지토리의 대응 파일과 모니터링하고 비교합니다. Altium Designer는 VCS 인터페이스를 통해 버전 관리 시스템에 정보를 요청하고 교환하며, 그 비교 결과로 나타난 파일 상태 조건에 따라 적절히 반응합니다. 실제로 이는 Projects 및 Storage Manager 패널의 파일 아이콘, 다양한 VCS 알림, 그리고 사용 가능한 파일 관리 명령의 적절한 변경으로 나타납니다.
아이콘과 그 의미는 Version Control Status Icons 섹션( Managing Project Documents 페이지)에 설명되어 있습니다.
Multiple User Access
대부분의 경우 회사의 버전 관리(Version Control) 인프라는 중앙 SVN 또는 Git 리포지토리를 기반으로 하며, 사용 가능한 프로토콜 방식 중 하나(svn, svn+ssh, https 등)를 통해 네트워크로 제공됩니다. 이를 통해 권한에 따라 네트워크의 모든 사용자가 접근할 수 있으며, 단일 소스를 기반으로 한 협업 프로젝트 개발을 가능하게 합니다.
또한 다중 접근 기능을 통해 팀의 서로 다른 구성원들이, 다른 사람이 파일을 다시 체크인할 때까지 기다릴 필요 없이, 프로젝트에서 독립적으로 계속 작업할 수 있습니다. 분산형 Git version control system 은 이 장점을 한 단계 더 확장하여, 작업 중에 로컬 작업 리포지토리에 파일을 커밋하고, 그 커밋된 변경 사항을 나중에 언제든지 중앙 Git 리포지토리로 ‘푸시’할 수 있게 해줍니다. 따라서 그때까지는 네트워크 연결이 필요하지 않습니다.
그럼에도 팀 호환 VCS는 두 사용자가 동일한 파일을 수정하는 불가피한 상황을 해결할 수 있는 도구와 기법이 제공되어야 합니다. 이러한 기능이 갖춰지면, 진정한 다중 사용자 설계 협업과 그에 따른 이점을 위한 기반이 마련됩니다.
이러한 상황을 지원하기 위해 Altium Designer에는 회로도 및 PCB 비교(또는 ‘diff’) 기능이 포함되어 있으며, Storage Manager panel을 통해 사용할 수 있습니다.
VCS Repositories
알려진 소스 파일 세트로 작업하는 가장 좋은 방법은 설계 프로젝트를 버전 관리 리포지토리와 같은 통제된 환경에 저장하는 것입니다. 이는 출력물이 올바른 소스 파일에서 생성되었음을 보장하는 유일한 방법이 다음과 같기 때문에 중요합니다:
-
소스 파일 세트가 최신인지 확인한다.
-
그 스냅샷을 만든다.
-
그 스냅샷으로부터 출력물을 생성한다.
Altium Designer에서 이러한 리포지토리는 Design Repository로 지칭됩니다. 설계 팀이 소유하는 Design Repository는 설계 프로세스 이력에 대한 고해상도 뷰를 포함하며, 설계 팀이 사용하는 주요 협업 도구입니다.
Design Repository는 여러 팀원이 데이터를 체크인/체크아웃할 수 있는 중앙 리포지토리가 되며, 설계에 가해진 모든 변경 사항의 완전한 리비전 이력을 유지합니다. 따라서 설계는 구성 요소인 프로젝트 및 소스 문서의 일련의 버전으로 저장되어, 시간이 지남에 따라 설계자의 의도를 점진적으로 보여주는 그림을 형성합니다. 버전 관리되는 Design Repository를 사용하면 설계의 어떤 리비전도 유실되지 않는다는 본질적인 보장을 얻을 수 있어, 지리적으로 떨어져 있는 팀 구성원 간에도 동일한 설계에 대해 안전하게 협업할 수 있습니다. 버전 관리 시스템의 특성상 설계에 대한 감사 추적(audit trail)이 제공됩니다. 어떤 사람이 어떤 소스 문서에서 무엇을 언제 변경했는지에 대한 투명성이 확보되면서 완전한 책임성이 생깁니다. 또한 시스템은 여러 개의 버전 관리 Design Repository를 지원할 수 있으며, 특정 리포지토리로의 연결은 프로젝트 폴더 내의 버전 관리 링크를 통해 설정됩니다.
Design Repository에 연결한다는 것은 사실상 해당 리포지토리를 시스템에 등록하는 것, 즉 Altium Designer에 그 존재를 알리는 것입니다. 또한 비공식 또는 ‘무단(rogue)’ 리포지토리에 대한 경로를 수동으로 지정하는 방식은 없습니다. Altium Designer를 통해서는, 사용자가 의도적으로 시스템에 연결해 둔 VCS 기반 Design Repository와만 상호작용할 수 있습니다.
버전 관리를 사용하기 전에, 프로젝트 파일은 VCS와 Altium Designer 양쪽에서 버전 관리 대상임을 인식해야 합니다. 이 과정은 VCS 방식과 애플리케이션에 따라 다를 수 있지만, 본질적으로는 설계 리포지토리를 생성 및/또는 연결하고, 설계 프로젝트 파일을 해당 리포지토리에 추가하는 것을 포함합니다.
Design Repository는 데이터베이스 구조를 기반으로 하며, 내부적으로 파일과 디렉터리의 계층 구조(파일 트리라고 함)로 정보를 저장합니다. 연결하는 실제 리포지토리는 중앙 SVN 리포지토리일 수도 있고, Git 작업 리포지토리(원격 Git 리포지토리와 연동됨)일 수도 있으며, 또는 로컬 PC나 공유 네트워크 위치처럼 접근 가능한 위치에 사용자가 생성한 리포지토리일 수도 있습니다.
Connected Workspace VCS
버전 관리 하에서 프로젝트를 작업하는 가장 고급 형태는 connected Workspace 의 기능을 활용하는 것입니다. Workspace는 project라는 고급 구성을 제공하며, 이를 통해 단순화된 워크플로와 저장 방식, 향상된 협업 기능 등을 제공합니다.
Workspace의 대상 VCS 리포지토리는 Workspace 및(로그인 시) Altium Designer와 긴밀하게 통합되어, 별도의 VCS 리포지토리를 설정하고 구성할 필요가 없습니다. 사용자 접근, 리포지토리 콘텐츠, 프로젝트 상태는 Workspace 브라우저 인터페이스를 통해 관리할 수 있습니다.
Update New Changes to Version Control
프로젝트가 버전 관리에 추가되면, 로컬 작업 프로젝트 폴더는 VCS 리포지토리의 대응 항목과 연결되며, 이는 Storage Manager panel에서 프로젝트 폴더 항목에 연결된 링크 아이콘으로 표시됩니다. 연결된 폴더와 리포지토리의 위치를 확인하려면 패널에서 임의의 파일 항목을 마우스 오른쪽 버튼으로 클릭하고 VCS Properties 옵션을 선택합니다(Git 사용 시에는 제공되지 않음). 다음 Properties 대화상자에는 연결된 위치의 경로와 최신 VCS 리비전에 대한 정보가 포함됩니다.
링크 아이콘으로 표시된 파일과 최신 VCS 리비전 정보가 포함된 해당 Properties panel
The Properties dialog provides the following information (the information is for viewing purposes only; no edits are allowed):
-
Path - 작업 폴더에 있는 로컬 문서의 경로).
-
URL - VCS 리포지토리에서 해당 문서 위치의 URL.
-
Repository Root - 리포지토리 루트.
-
Repository UUID - 리포지토리 UUID.
-
Revision - 로컬 작업 폴더에 있는 문서의 현재 리비전.
-
Last Change Author - 마지막 변경의 작성자.
-
Last Change Revision - 마지막 변경의 리비전
-
Last Change Time - 마지막 변경의 날짜 및 시간.
-
Conflicted - 문서가 충돌(conflicted) 상태인지 여부.
등록된 VCS 링크로 인해, 버전 관리 시스템은 로컬 프로젝트 폴더의 파일과 VCS 리포지토리 폴더에 있는 해당 파일 간의 차이를 모니터링하고 감지할 수 있습니다. 예를 들어 Altium Designer에서 설계 파일을 편집하고 저장하는 등 차이가 감지되면, 버전 관리 시스템은 로컬 파일의 상태를 Modified (
)로 변경하고, Altium Designer는 패널의 우클릭 메뉴에서 적절한 VCS 명령 세트를 제공합니다.
Commit Changes
Altium Designer에서 프로젝트 문서 파일을 편집하고 저장하면, 해당 파일은 Modified로 플래그되며, Projects 및 Storage Manager 패널 모두에서 그와 같이(
) 표시됩니다. 이러한 변경 사항을 VCS에서 새 리비전으로 커밋하려면, 패널에서 파일 항목을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 Commit 명령을 선택하거나, 메인 메뉴에서 Project » History & Version Control » Commit 명령을 선택합니다.
파일에 대한 변경을 커밋할 때
Edit Comment dialog가 열립니다. 이 대화상자에서 커밋 이유를 설명하는 코멘트를 추가할 수 있으며, 이를 통해 다른 사람이 어떤 변경이 이루어졌는지 파악하는 데 도움이 됩니다. 이전에 코멘트를 추가한 적이 있다면, 그중 하나를 빠르게 선택해 사용할 수도 있습니다.
The Commit command
The Commit Whole Project command could also be used, which will commit all modified files in the project. When committing the whole project, the Commit to Version Control dialog will open.

The Commit to Version Control dialog
Options and Controls of the Commit to Version Control Dialog
Upper Pane
상단 창에는 선택한 프로젝트의 모든 파일이 나열되며, 각 파일이 VCS에 포함되어 있는지 여부가 표시됩니다. 또한 파일이 추가 또는 삭제 대상으로 표시되었는지 등 관련 정보도 함께 나열됩니다. 설계자는 버전 관리에 커밋할 파일을 선택할 수 있습니다. Path 열은 각 파일의 경로를, Status 열은 파일의 현재 상태를 보여줍니다. 또한 이 영역에는 다음 옵션을 제공하는 작은 우클릭 메뉴가 있습니다:
-
Select All - 대화상자에 나열된 모든 파일을 선택합니다. 선택된 파일은 VCS에 추가됩니다.
-
Select None - 대화상자에 나열된 모든 파일 선택을 해제합니다. 이 파일들은 VCS에 추가되지 않습니다.
-
Select Project Documents - 프로젝트 문서만 선택합니다. 선택된 파일만 VCS에 추가됩니다.
Lower Pane
-
Comment - 이 텍스트 상자에서 파일을 버전 관리에 커밋하기 전에 코멘트를 작성할 수 있습니다.
-
Commit and Push - 이 명령은 선택한 파일(들)의 작업 사본( Storage Manager panel의 Files 영역)에서 수정된 내용을 VCS 리포지토리에 체크인하고, 프로젝트 업데이트를 서버로 푸시하는 데 사용됩니다. 수정된 파일은 Modified 상태로 구분됩니다.
-
Commit - 드롭다운을 사용해 Commit 버튼에 접근할 수 있으며, 이를 통해 선택한 파일(들)의 작업 사본( Storage Manager panel의 Files 영역)에서 수정된 내용을 VCS 리포지토리에 체크인할 수 있습니다. 수정된 파일은 Modified 상태로 구분됩니다.
-
When using Subversion (SVN): 커밋 프로세스는 로컬 폴더의 업데이트된 파일을 리포지토리로 복사하고, VCS 항목의 리비전 번호를 증가시키며, 파일 상태를
No Modification (
)로 되돌립니다.
-
When using Git:커밋 프로세스는 로컬 작업 리포지토리 VCS를 업데이트하면서 항목의 리비전 번호를 증가시키고 파일 상태를
Ahead of Server(
)로 설정합니다. 작업 리포지토리에서 파일을 계속 편집, 저장 및 커밋할 수도 있고, Push 명령을 사용해 원격 Git 리포지토리를 업데이트하여 새 변경 사항을 확정할 수도 있습니다. 그러면 파일 상태는 No Modification(
)로 다시 돌아갑니다.
Git 기반 Workspace 프로젝트의 경우 Commit 및 Commit Whole Project 명령을 사용할 수 없습니다. Projects 패널에서 프로젝트 항목을 마우스 오른쪽 버튼으로 클릭했을 때 나타나는 메뉴의 Save to Server 명령을 사용하면, Workspace 프로젝트를 로컬 리포지토리에 커밋하고 원격 리포지토리로 푸시하는 작업을 한 번에 수행할 수 있습니다.
필요한 경우 Advanced Settings dialog에서 VCS.AllowGitCommit 옵션을 활성화하여 Commit 및 Commit Whole Project 명령을 사용할 수 있게 할 수 있습니다.
프로젝트가 버전 관리에 추가된 후에는 단수형 Add to Version Control 및 Commit 명령을 사용하여 추가 파일을 개별적으로 버전 관리에 추가하고 커밋할 수 있습니다. 마찬가지로 Remove from Version Control 명령을 사용하면 특정 파일을 버전 관리에서 개별적으로 제거할 수 있으며(단, 로컬 작업 프로젝트에는 유지됨) 가능합니다.
Storage Manager 패널을 열어 VCS Revisions 섹션에서 작업 순서를 확인하세요. 여기에는 해당 파일에 대한 새 VCS 리비전(리비전 번호가 증가됨) 생성이 포함되며, 이 경우 리비전 3 및 추가된 코멘트가 해당됩니다.
아이콘은 선택한 파일의 최신이자 현재 리비전, 즉 버전 관리 용어로 Head 리비전을 나타냅니다.
Storage Manager panel의 VCS Revisions 섹션
리비전 항목과 히스토리 이벤트 항목을 함께 보려면, 오른쪽 클릭 컨텍스트 메뉴에서 Switch to Combined View를 선택하여 단일 Timeline 보기로 전환하세요.
버전 관리에서 체크아웃
위에서 설명했듯이, 버전 관리에 추가된 로컬 프로젝트는 프로젝트의 로컬 폴더에서 Altium Designer로 편집할 수 있으며, 변경 사항은 VCS 리포지토리에 업데이트됩니다. 로컬 폴더와 리포지토리 폴더는 VCS에 의해 연결되며 최종적으로 동기화됩니다.
프로젝트의 소스 폴더(사용자 PC에 로컬로 존재)에 접근할 수 없는 다른 사용자는, 프로젝트를 호스팅하는 VCS 리포지토리에서 Clone (Git) 또는 Check Out (SVN) 프로세스를 사용해 파일의 사본을 자신의 환경으로 가져올 수 있습니다. 프로젝트 설계에 협업하려는 모든 사용자는 해당 공용 설계 리포지토리에 연결해야 하며, 일반적으로 로컬 네트워크를 통해 접근 가능하도록 구성하거나 서버에서 접근하도록 구성합니다.
선택한 리포지토리 프로젝트 폴더와 그 안의 파일들은 지정된 로컬 폴더로 체크아웃되며 Altium Designer에서 열립니다. 로컬 폴더는 선택한 리포지토리에 대해 체크아웃 폴더로 정의된 폴더입니다. 또한 체크아웃된 프로젝트는 이후 VCS 리포지토리의 대응 항목과 연결됩니다. 이 VCS 링크는 버전 관리 시스템에 로컬 체크아웃 폴더의 파일과 VCS 리포지토리 폴더의 해당 파일 간 차이를 모니터링하고 감지하도록 지시합니다.
파일 편집이 완료되면 변경 사항을 Commit하여, 설계 리포지토리의 파일이 체크아웃 폴더의 파일과 일치하도록 동기화하고 새 VCS 리비전을 생성합니다.
체크아웃 vs 프로젝트 열기
local 프로젝트가 버전 관리에 추가된 경우, 실제로 VCS에 편집 내용을 반영하는 방법은 두 가지가 있습니다.
-
Altium Designer에서 로컬 프로젝트(File » Open Project)를 열고, 저장된 변경 사항을 VCS 리포지토리에 커밋하는 방법입니다. 이 경우 로컬 프로젝트 폴더와 리포지토리의 대응 폴더는 VCS로 연결됩니다.
-
VCS 리포지토리에서 프로젝트(File » Check Out)를 체크아웃한 다음, Altium Designer에서 저장한 변경 사항을 다시 리포지토리에 커밋하는 방법입니다. 이 경우 지정된 체크아웃 폴더의 프로젝트와 리포지토리의 대응 항목이 VCS로 연결됩니다.
로컬 프로젝트는 다른 사용자와 공유되는 VCS 프로젝트의 소스(원본)입니다. 작업 방식에 따라 이 로컬 소스 버전을 제거하거나 아카이브된 프로젝트 소스로 잠그고, 이후에는 Check Out 방식으로 추가 편집을 수행할 수 있습니다. 또는 로컬 ‘소스’ 폴더(Open Project)에서 계속 프로젝트 파일을 열어 작업할 수도 있습니다.
두 옵션은 작업 폴더의 위치가 서로 다르기 때문에(로컬 소스 프로젝트 폴더 또는 지정된 VCS 체크아웃 폴더) 한 가지 방법만 고수하는 것이 가장 좋습니다(체크아웃 권장). 반대로 두 방법을 모두 사용하면 로컬 PC에 동일 프로젝트의 활성 사본이 여러 개 존재하게 됩니다. 다만 각 편집 후 중앙 VCS 리포지토리에 성실히 커밋한다면, 리포지토리에는 의도한 대로 항상 프로젝트의 최신 리비전이 유지됩니다.
다른 사용자처럼 프로젝트가 로컬에 없는 경우에는 VCS 리포지토리에서 프로젝트를 체크아웃하는 것만이 유일한 선택입니다.
또한 프로젝트를 VCS 리포지토리에서 한 번 체크아웃하면 로컬에 존재하게 되며, 이후에는 체크아웃 폴더(File » Open Project)에서 직접 다시 열 수 있습니다. 이 경우에도 VCS에서 프로젝트를 체크아웃할지 로컬 버전을 열지 선택할 수 있지만, 로컬 사본은 항상 하나만 존재합니다. 실무적인 VCS 관점에서 두 방법은 매우 유사하지만, 특정 상황에서는 동작이 달라질 수 있습니다. 예를 들어 로컬 파일이 누락된 경우 체크아웃 프로세스는 파일을 복원하지만, Open Project 명령은 해당 파일을 Project에서 제거합니다.
버전 관리 리비전
버전 관리 하에 있는 Altium Designer 설계 문서로 작업하는 동안, 중앙(공유) VCS 리포지토리에서 가져온 설계 파일은 해당 파일의 최신 리비전을 나타냅니다. 로컬 편집이 완료되어 공유 VCS 리포지토리에 커밋(또는 Git의 경우 푸시)되면, 그 파일 버전이 최신 리비전이 됩니다.
따라서 체크아웃, 편집, 저장, 커밋(그리고 Git의 경우 Push)의 일반적인 순서는 프로젝트 설계가 발전함에 따라 중앙 VCS에 새 파일 리비전을 점진적으로 추가합니다. 그러나 여러 설계자가 협업 개발하는 프로젝트에서는, 어떤 설계자든 언제든지 중앙(공유) 리포지토리에 새 리비전을 커밋할 수 있습니다.
최신이 아닌 리비전
여러 설계자와 중앙 리포지토리 간 상호작용은 여러 형태로 나타날 수 있는데, 그중 하나는 로컬에서 열려 있는 프로젝트가 더 이상 최신 리비전이 아닌 경우입니다. 리포지토리에서 체크아웃했거나 로컬 작업 폴더에서 열려 있는 프로젝트는 Projects 패널에서 Out of date(
) 상태로 표시됩니다.
Out of fate로 라벨링된 파일
이 경우 다른 사용자가 로컬에서 마지막으로 편집한 이후 동일한 프로젝트를 편집하고 리포지토리에 커밋한 것입니다. 예를 들어 로컬 사용자 Barry가 프로젝트를 작업하여 Revision 14를 커밋했지만, 그 이후 다른 사용자 Harold가 Revision 15를 커밋했을 수 있으며, 이는 아래에 표시된 Storage Manager 패널에서 확인할 수 있습니다. VCS는 로컬 작업 폴더의 파일과 리포지토리의 대응 파일(이 경우 더 최신) 간 차이를 감지하므로, 시스템은 가장 최신인 local 리비전(
아이콘으로 표시됨)을 최신이 아닌 것으로 간주합니다.
Storage Manager
에서의 서로 다른 리비전 상태
Altium Designer의
Compare function을 사용하여 파일 리비전 간 차이를 확인할 수 있습니다.
이 상황은 Projects 또는 Storage Manager 패널의 오른쪽 클릭 컨텍스트 메뉴에서 Update 명령을 사용해 로컬 파일을 중앙 VCS 리포지토리의 파일과 일치하도록 업데이트함으로써 해결됩니다. 그러면 두 파일 버전이 동기화되고, 로컬 버전(사용자 Barry의 경우)은 최신 리비전 버전으로 업데이트됩니다(이 예에서는 Revision 15). 또한 Out of date로 지정된 상태에서 파일을 Save하면, 작업 폴더에서 더 오래된 리비전의 파일이 업데이트되었음을 VCS가 감지하는 VCS Conflict 상황이 발생합니다.
Storage Manager
에서의 중앙 리포지토리와 로컬 리비전Update Whole Project 명령을 선택하여 공유 리포지토리에서 체크아웃할 파일을 선택할 수 있는 Update from Version Control 대화상자를 열 수도 있습니다. 대화상자에는 최신이 아니거나 충돌이 포함된 프로젝트의 모든 문서가 표시됩니다. 업데이트할 특정 문서를 선택하거나 한 번에 모두 업데이트하도록 선택할 수 있습니다. 선택한 문서는 리포지토리에서 업데이트되며, 최신이 아닌 문서는 기본적으로 모두 선택됩니다. 선택된 모든 문서는 리포지토리의 최신 버전으로 업데이트됩니다.

Update from Version Control 대화상자
Path 열은 파일 디렉터리를 표시합니다. Status 열은 파일의 현재 상태를 표시합니다. 파일 상태가 Conflict로 표시되는 경우, OK을 클릭하여 파일을 업데이트하면 확인 대화상자가 표시됩니다. OK를 클릭하면 리포지토리의 최신 버전으로 업데이트되며, Cancel를 클릭하면 종료하고 리포지토리에 현재 저장된 버전에 대한 변경 사항을 저장합니다.
프로젝트를 리포지토리에서 체크아웃한 것이 아니라 로컬 체크아웃 폴더에서 열었을 경우, 설계 파일은 Out of date 상태로 표시되지 않습니다. Storage Manager 패널의 Refresh 명령(또는 F5 키)을 사용하면 VCS가 연결된 폴더를 비교하도록 트리거하여 이를 바로잡을 수 있습니다. 하지만 이 상황은 중앙 SVN 리포지토리에서 협업할 때 프로젝트를 리포지토리에서 체크아웃하여 작업해야 하며(로컬에서 직접 열지 않음) 그 필요성을 보여주는 또 다른 근거이기도 합니다.
리비전 충돌
여러 설계자와 중앙 저장소 간의 상호작용으로 인해, 동일한 파일이 두 명의 Altium Designer 사용자가 로컬에서 편집하고 저장했으며 그중 한 명이 해당 변경을 커밋한 상황이 발생할 수도 있습니다.
이는 한 설계자의 단계(체크아웃, 편집, 저장, 커밋) 진행이 다른 설계자의 단계와 서로 엇갈려(interleave) 진행되었음을 의미합니다. 따라서 사용자가 편집을 위해 저장소에서 체크아웃한 파일이 작업 중에는 최신 리비전으로 remain되지 않을 수 있습니다. 그 사이 다른 사용자가 리비전을 업데이트했기 때문입니다. 이 경우 먼저 편집 내용을 저장소에 커밋한 사람이 새 리비전을 생성하여 우선권을 갖게 되며, 동일한 파일을 편집하고 저장해 둔 다른 사용자는 Conflict 상황에 직면하게 됩니다. 이는
아이콘으로 표시됩니다.
리비전 충돌 예
VCS 관점(작업 폴더의 파일과 저장소의 파일을 비교)에서 Conflict는 작업 폴더에 있는 오래된 리비전의 파일이 편집되고 저장된 상태를 의미합니다.
Git 버전 관리를 사용할 때는, 두 설계자가 동일한 파일을 편집/저장/커밋하여 각자의 로컬 Git 저장소 폴더에 반영한 뒤, 그중 한 명이 해당 변경을 중앙 Git 저장소(원격, Remote)로 푸시하면 Conflict가 생성됩니다. Git VCS 리비전은 Storage 패널에서 GUID 문자열로 표시됩니다.
Storage Manager 패널의 Git VCS 리비전
파일이 Conflict 상태일 때 사용할 수 있는 여러 명령 옵션이 있으며, 이는 Projects 패널의 우클릭 메뉴, Project » History & Version Control 메인 메뉴, 그리고 Storage Manager 패널에서 접근할 수 있습니다.
-
Commit – 이 옵션은 Subversion 오류를 유발합니다. 로컬에서 편집된 리비전(예:
Revision 15)을 커밋하면, 다른 사용자가 이미 커밋해 둔 더 최신 리비전(Revision 16)을 덮어쓰게 되기 때문입니다.
-
Update – 이 옵션은 중앙 저장소의 최신 버전(
Revision 16)으로 로컬 파일 리비전을 업데이트하며, 그 결과 Revision 15에 대해 로컬에서 수행한 변경 사항은 모두 손실됩니다.
-
Resolve Conflict – 이 옵션은 마지막 업데이트 이후 저장소에 커밋된 변경 사항을 폐기합니다. 명령을 실행하면 확인 대화상자가 나타나며, 계속하려면 Yes 를 클릭합니다. 작업 폴더의 프로젝트 파일은 다른 사용자가 저장소에 체크인한 최신 리비전으로 업데이트되지만, 편집기는 이전 리비전에 대해 사용자가 수행한 변경 사항을 유지합니다. 따라서 로컬 파일은 Modified 상태를 갖게 되며, Commit 명령 또는 Commit Whole Project 명령을 사용해 해당 변경을 저장소의 새 리비전으로 커밋할 수 있습니다. 프로젝트 파일을 커밋하고 나면, 저장소에 더 최신 리비전을 생성했기 때문에 다른 사용자는 해당 파일(들)을 Out of date로 보게 됩니다.
이 옵션은 text 파일이 충돌 상태일 때만 권장됩니다. Subversion 시스템이 로컬 파일에 차이점을 병합(Merge)하려고 시도하기 때문입니다. 이 과정은 설계 문서 같은 다른 파일 형식을 손상시킬 가능성이 있으므로, Conflict는 최신 소스 리비전으로 업데이트하거나 로컬 변경을 되돌리는 방식으로 해결하는 것이 가장 좋습니다.
Git을 사용할 때 Resolve Conflict 명령은 로컬 저장소 폴더에 파일을 커밋함으로써 충돌 상태를 무시(override)합니다. 이후 해당 파일을 원격 저장소로 푸시하면, 다른 설계자의 파일은 Out of Date로 표시되며 업데이트가 필요합니다. 다만 Subversion과 마찬가지로, 가장 안전한 방법은 충돌된 파일을 최신 소스 리비전으로 Update하는 것(Git 용어로 Pull) 또는 로컬 변경을 Revert하는 것입니다.
-
Revert – 이 옵션은 로컬 변경을 잃게(되돌리게) 하며, 로컬 파일을 기본 리비전(여기서는
Revision 15)으로 되돌립니다. 따라서 리비전 충돌은 해결되지만, 저장소에 더 최신 리비전(Revision 16)이 존재하므로 파일은 Out of date로 표시됩니다.
리비전 비교
버전 관리를 사용할 때의 중요한 장점 중 하나는 설계 파일의 과거 리비전을 비교할 수 있다는 점입니다. 이는 Altium Designer에 내장된 Difference Comparator로 제공되며, Storage Manager 패널에서 접근합니다. Differences 패널과 함께 사용하면, 영향을 받는 객체를 대화형으로 탐색하면서 VCS 리비전 간 논리적 또는 그래픽 비교를 수행할 수 있습니다. Schematic과 PCB 리비전 모두 비교할 수 있습니다.
두 리비전 간 비교를 시작하려면, Storage Manager 패널 VCS Revisions 목록에서 두 항목을(표준 Ctrl+click 방법으로) 모두 선택한 다음, 패널 우클릭 컨텍스트 메뉴에서 Compare 명령을 선택합니다.
또한
Projects 패널에서 문서 우클릭 메뉴의
History & Version Control » Compare with Head 명령을 사용하여, 현재 포커스된 문서를 VCS 저장소에 있는 해당 문서의 헤드(최신) 리비전과 비교할 수도 있습니다.
Storage Manager 패널의 Compare 명령
두 파일 리비전은 분할 화면 모드로 열리며 시각적으로 비교할 수 있습니다. 표시되는 차이점은 Options for Project 대화상자의 Comparator tab에서 Physical 비교 유형에 대해 선택한 옵션에 의해 결정됩니다 – Project » Project Options.
비교 차이점을 찾고 확인하는 핵심은 Differences 패널에 있습니다. 이 패널은 문서 간 논리적/그래픽 차이점을 선택 가능한 목록으로 제공합니다. 각 문서 리비전에 대한 패널 항목은 편집기와 연동되어, 감지된 차이(예: 이동된 객체)를 선택하면 그래픽으로 하이라이트 표시할 수 있습니다.
비교 차이점의 위치 확인 및 보기 기능은 Differences 패널에 있습니다
Compare 기능은 Schematic 및 텍스트 기반 문서뿐 아니라 PCB 문서의 리비전에도 적용됩니다.
-
Schematic 또는 PCB(설계 또는 라이브러리) 문서의 경우 그래픽 비교가 수행되며, 감지된 차이점이 Differences 패널에 목록으로 표시됩니다. 설계 편집기 창에서 문서의 두 버전을 나란히 열어 그래픽으로 차이점을 살펴볼 수 있습니다. 감지된 차이점의 최상위 폴더를 클릭하면 두 문서에서 해당 차이점이 동시에 하이라이트됩니다.
-
텍스트 기반 ASCII 문서의 경우 CompareForm 대화상자가 나타나 문서 두 버전의 그래픽 ‘diff’를 표시합니다. 선택한 문서는 나란히 표시됩니다. 이 대화상자는 비교 전용이며, 로드된 문서에 대한 수정은 할 수 없습니다. 색상 코딩을 통해 두 문서 버전 간 다양한 차이점을 강조 표시합니다. 추가된 줄(분홍), 수정된 줄(초록), 삭제된 줄(파랑). 변경 요약과 색상 범례는 대화상자 왼쪽 하단에 표시됩니다.
Compare 기능
Compare 명령은 현재 로컬 리비전(작업 폴더)과 저장소의 더 최신 리비전 사이를 포함하여, 어떤 리비전 쌍에도 적용할 수 있습니다. 이 경우 최신 로컬 리비전은 Storage Manager 패널에서 Out of date (
)로 표시되지만, 다른 사용자가 저장소에 추가한 더 최신 리비전과도 비교할 수 있습니다.
로컬 리비전은 Storage Manager 패널에서 Out of date로 표시됨
이 접근 방식은 새 리비전으로 업데이트할 때 적용될 변경 사항을 그래픽으로 미리 확인할 수 있게 해줍니다. 위 예시 이미지에서 현재 로컬 리비전(
아이콘으로 표시)은 Revision 19이지만, 다른 사용자가 저장소에 새 리비전(Revision 22)을 커밋했습니다. Revision 19과 Revision 22 간 시각적 비교를 시작하면 저장소의 새 변경을 수용할지에 대해 근거 있는 결정을 내릴 수 있으며, 나아가 Update 명령을 적용할지 또는 로컬 파일을 다시 저장하고 resolving the conflict를 로컬 버전 우선으로 수행하여(즉, gh) Conflict 상태를 유도해 이를 무시할지 결정할 수 있습니다.
버전 관리 용어
| 용어 |
의미 |
| Base |
저장소에서 체크아웃하여 로컬 Working Copy로 삼은 리비전입니다. 체크아웃된 리비전이라고도 합니다.
|
Check-in
|
파일의 작업 사본을 저장소에 저장하는 것입니다. Altium Designer에서는 Commit로 지칭합니다.
|
Check-out
|
VCS 저장소에서 작업 폴더로 파일 사본을 가져오는 것입니다. 일반적으로 파일의 최신 리비전이지만, 더 이전 리비전도 체크아웃할 수 있습니다. VCS에 따라 파일은 단순 체크아웃 상태로 표시되거나, 독점 체크아웃(잠금)으로 표시될 수 있습니다.
|
Clone
|
원격 Git 저장소를 로컬 폴더의 작업 Git 저장소로 복사(클론)하면서, HEAD(최신) 버전을 해당 폴더로 자동 체크아웃하는 Git 명령입니다. 로컬 저장소에는 원격 저장소에 대한 링크 참조(이 경우 origin)가 포함되므로, 로컬 작업 저장소에서 업데이트된 파일은 Push 명령을 사용해 원격 저장소로 업로드할 수 있습니다.
|
Commit
|
파일의 작업 사본을 저장소에 다시 저장하는 것입니다. 일부 버전 관리 시스템에서는 Check-in로 지칭합니다. Altium Design Software에서 일반 Save 명령은 편집된 파일을 작업 폴더에 저장하는 반면, Commit는 해당 폴더의 파일을 저장소에 새 리비전(버전)으로 저장합니다.
|
Conflict
|
두 Altium Designer 사용자가 동일한 파일의 동일 영역에 영향을 주는 변경을 커밋하려고 할 때 발생하는 상황입니다. Merge 도구 사용, 수동 해결, 또는 어느 버전이 우선(새 리비전이 될지)할지 결정하는 방식으로 해결해야 합니다.
|
Database
|
버전(또는 소스) 관리 하에 있는 모든 파일의 마스터 저장소로, 실제로는 Repository 라고도 합니다.
|
Git
|
Git은 오픈 소스 버전 관리 시스템입니다. Altium Designer는 Git 기능을(VCS Provider - Git 확장을 통해) 통합하고 있어, Storage Manager 및 Projects 패널에서 리비전을 직접 추적하고 접근할 수 있습니다.
|
Head
|
버전 관리 시스템에 커밋된 최신 리비전.
|
Log message
|
리비전을 리포지토리에 다시 체크인(커밋)할 때, 해당 리비전에 대해 수행된 변경 사항에 대한 코멘트입니다. 로그 메시지는 파일 변경 진행 상황을 요약하는 용도로 사용할 수 있습니다.
|
Project
|
많은 버전 관리 시스템은 프로젝트라는 개념을 지원합니다. VCS 프로젝트는 관련된 파일들의 집합으로, 하나의 세트로 체크인/체크아웃할 수 있습니다. 또한 VCS는 프로젝트 내 모든 파일에 버전 번호를 설정하는 등, 다른 프로젝트 유형의 기능을 지원할 수도 있습니다. 이는 Add Project Folder to Version Control command를 사용해 Version Control에 추가할 수 있는 Altium Designer 프로젝트의 개념과는 구별됩니다.
|
Push
|
로컬 작업 리포지토리에 있는 파일을 사용해 원격 Git 리포지토리를 업데이트하여 로컬과 원격 리포지토리를 동기화합니다. 이 명령은 로컬 Git 리포지토리의 파일이 원격 Git 리포지토리의 대응 파일보다 최신일 때 사용할 수 있습니다. 개념적으로 Git Pull 명령의 반대입니다.
|
Repository
|
버전(또는 소스) 관리 하에 있는 모든 파일의 마스터 저장소로, Database라고도 합니다.
|
Revision
|
파일 또는 파일 집합의 히스토리에 기록된 커밋된 변경 사항입니다. VCS가 파일의 서로 다른 에디션(버전)을 추적하기 위해 제공하는 영숫자 참조입니다.
|
Sandbox
|
리포지토리에서 파일을 체크아웃하여 작업할 수 있도록 하는 폴더로, Working Folder라고도 합니다. Altium Design Software에서 체크아웃한 파일은 자동으로 로드됩니다.
|
| SVN |
Subversion은 오픈 소스 버전 관리 시스템입니다. Altium Designer는 (VCS Provider - SVN 확장 기능을 통해) SVN 기능을 통합하고 있으며, Storage Manager 및 Projects 패널에서 리비전을 직접 추적하고 액세스할 수 있습니다.
|
Update
|
리포지토리에 있는 파일 버전의 변경 사항을 작업 사본으로 확인하고 ‘가져오는’ 동작입니다(Commit 또는 Check-in의 반대). 차이점을 병합하는 과정에는 Merge 도구가 필요하거나 수동 업데이트가 필요합니다.
|
VCS
|
Version Control System: 파일 버전 히스토리 관리 및 파일 검색(가져오기)을 수행할 수 있는 모든 도구를 지칭하는 일반 용어입니다.
|
Version
|
버전(version)이라는 용어는 일반적으로 사람이 관리 대상 파일(또는 소스 코드 같은 출력물)에 부여하는 외부 참조 번호를 의미합니다. 대부분의 경우 이는 리비전으로 간주됩니다. |
Working Copy
|
변경이 이루어지는 파일의 ‘로컬’ 사본으로, 보통 Working Folder에 위치합니다.
|
Working Folder
|
리포지토리에서 파일을 체크아웃하여 작업할 수 있도록 하는 폴더입니다. Git의 경우 로컬 Working Repository입니다. Altium Designer에서 체크아웃한 파일은 자동으로 로드됩니다.
|
참고 자료