1. Git이란 무엇인가?
Git은 파일의 변경 이력을 Commit(버전)으로 기록하고, Branch(분기)를 통해 서로 다른 작업 방향을 관리하는 버전 관리 시스템입니다.
TopoGit은 이 사고방식을 CAD 도면 세트에 적용한 TopoSnap 고유의 버전 관리 기능입니다. 명령줄 Git이 아니며, Git 저장소·원격 서비스와 자동 연동하지 않습니다. 도면을 편집하는 것은 기존 CAD 도구이고, TopoGit은 사용자가 승인한 시점의 파일 구성을 별도 스냅샷으로 남깁니다.

2. 어떻게 사용하는가?
1층 코어 변경. 자동저장은 Commit을 대신하지 않습니다.Alternative_A처럼 분기 이름을 지정합니다. 각기 다른 설계 대안을 구분해 기록하는 출발점입니다.현재 V1.5.16 기능 범위: Repository 생성, 명시적 Commit, Branch 생성과 파일 수준 변경 조회가 동작합니다. Branch Checkout(전환), 과거 Commit MVIEW 동시 비교, CAD 객체 단위 Visual Diff, 승인형 Restore, Binder GUI 편집은 아직 연결되지 않았습니다. 생성한 Branch로 자동 전환되거나 도면이 자동 복사되지 않습니다.

간단한 사용 시나리오
가상 예시: 학교 건물 평면도를 저장하고 기준 평면 확정 Commit을 기록합니다. 이후 Alternative_A Branch를 만들고, 현재 버전 관리 코어에서 독립적으로 설계 대안을 관리할 준비를 합니다. 실제 Branch 전환과 작업 파일 덮어쓰기는 여전히 차단되어 있습니다. 과거 Commit은 새 폴더로 추출해 따로 확인할 수 있습니다.
V1.5.16 — 변경 상태·무결성·스냅샷 추출
TopoGit 명령은 Windows와 Linux 공통입니다. 프로젝트 도면을 먼저 저장한 뒤 GITINIT으로 현재 도면 폴더의 저장소를 연결합니다.
| 명령 | 동작 |
|---|---|
GITSTATUS | 마지막 Commit과 디스크에 저장된 도면 파일을 비교하여 변경 파일 개수를 표시합니다. 아직 저장하지 않은 GUI 편집 상태는 포함하지 않습니다. |
GITVERIFY | 현재 브랜치 HEAD의 전체 조상 Commit과 스냅샷 Blob을 해시로 검증합니다. |
GITEXPORT HEAD "/home/user/Version-01" | HEAD의 도면 묶음을 별도 폴더로 추출합니다. 대상 폴더가 이미 있거나 현재 프로젝트 내부라면 거부합니다. |
GITEXPORT <전체 Commit ID> "X:\Archive\Version 01" | 특정 Commit에서 도면을 읽어 새 폴더로 추출합니다. 공백이 있는 폴더는 큰따옴표로 묶습니다. |
추적 확장자에 .3dm과 .tsplot이 추가되었습니다. 과거 Commit 내용은 변경하지 않으며 다음 Commit부터 포함됩니다.
중요: GITEXPORT는 원본 도면을 자동 덮어쓰지 않습니다. Branch Checkout, 자동 병합, Binder의 GUI 편집, 2D 객체 단위 Visual Diff는 아직 완성되지 않았습니다. 추출 폴더를 작업 프로젝트와 동일시하지 마세요.
3. 어떤 장점이 있는가?

4. 용어 간단 정리
| 용어 | 뜻 | TopoGit 동작 |
|---|---|---|
| Repository | 도면 세트의 이력 보관함 | 현재 폴더 기준으로 생성 |
| Commit | 사용자가 확정한 버전 기록 | 명시적 승인으로 생성 |
| Branch | 별도 설계 흐름 | 이름과 분기 참조 생성, Checkout은 미지원 |
| History | 저장된 Commit의 시간순 내역 | 파일 단위 이력 표시 |
| Compare / Diff | 두 버전 사이의 차이점 비교 | 파일 비교 코어만 구현, MVIEW Visual Diff 미연결 |
| Restore | 과거 상태 복구 | GUI 복원 비활성화 |
자동 병합은 제공하지 않습니다. TopoGit은 설계안을 선택하는 도구가 아닙니다. 현재 작업 중인 파일을 묵시적으로 덮어쓰거나 다른 Branch의 변경을 자동 적용하지 않습니다.