svn
SVN 1.10+Subversion(SVN) 명령어 빠른 참조: checkout, update, commit, branch/tag, merge, 히스토리 조회, 저장소 관리 — 자주 쓰는 옵션과 실전 예시까지 정리했습니다.
명령어 28개
시작하기
svn checkout <url> [<dir>]저장소에서 작업 사본을 체크아웃; 프로젝트 파일을 처음 받을 때 사용.
-r <rev> 특정 리비전; --depth empty|files|immediates|infinity
svn checkout https://svn.example.com/repo/trunk ./my-projectsvn info작업 사본 또는 URL 정보 표시: URL, 리비전, 마지막 수정 등.
svn info .매일 작업
svn update작업 사본을 저장소와 동기화; 서버 변경을 병합할 수 있습니다.
-r <rev> 특정 리비전으로 업데이트; --accept postpone|base|mine-full|theirs-full|edit|launch
svn update --accept postponesvn status작업 사본 상태 표시: 수정, 추가, 삭제, 추적 안 됨.
-u 서버 out-of-date 정보; -v verbose; --quiet 추적 안 됨 숨김
svn status -usvn add <path>다음 커밋 시 추가할 파일 또는 디렉터리를 예약합니다.
-N 비재귀(디렉터리만); --force 이미 버전 관리 중인 파일도 추가
svn add src/utils/ helpers/svn delete <path>작업 사본에서 파일 또는 디렉터리를 제거하고 다음 커밋에서 삭제를 예약합니다.
--keep-local 작업 사본에 파일 유지(서버에서 삭제 안 함)
svn delete obsolete/old-config.jsonsvn commit -m "<msg>"로컬 변경을 로그 메시지와 함께 저장소로 보냅니다.
-m 인라인 메시지; -F <file> 파일에서 메시지 읽기; --no-unlock 잠금 유지
svn commit -m "feat: add login form validation"svn diff경로 또는 리비전 간의 통합 diff 를 보여줍니다.
-r <rev1>:<rev2> 리비전 비교; -c <rev> 그 리비전의 변경; --diff-cmd / -x
svn diff -r HEAD~5:HEAD --summarizesvn revert <path>로컬 변경을 폐기하고 파일/디렉터리를 원상복구합니다.
-R 재귀; --depth infinite
svn revert -R .브랜치 & 태그
svn copy <src> <dst>저장소에서 복사로 브랜치 또는 태그 생성(저렴한 복사).
-r <rev> 특정 리비전에서 복사; -m 메시지
svn copy ^/trunk ^/branches/feature-x -m "branch: feature-x"svn switch <url>재체크아웃 없이 작업 사본을 다른 브랜치/태그로 가리키게 합니다.
-r <rev> 특정 리비전으로 전환; --relocate URL 접두사 재작성
svn switch ^/branches/feature-xsvn list <url>체크아웃 없이 저장소 디렉터리 항목을 나열합니다.
-v verbose; -r <rev>
svn list -v ^/tags/병합 & 충돌
svn merge <url[@rev]>두 소스/브랜치 간의 차이를 작업 사본에 적용합니다.
-c <rev> / -r <rev1>:<rev2> 병합할 리비전; --record-only 추적만
svn merge ^/trunk -c 12345svn merge --reintegrate <url>기능 브랜치를 원래 브랜치로 다시 통합(레거시, 1.8 이전).
svn merge --reintegrate ^/branches/feature-xsvn resolve <path>병합/업데이트 후 충돌 파일을 해결합니다.
--accept base|mine-full|theirs-full|working|theirs-conflict|theirs-full
svn resolve --accept theirs-full conflict.txt히스토리 & 조회
svn log파일 또는 저장소의 커밋 로그 메시지를 표시합니다.
-r <rev1>:<rev2> 범위; -l <n> 제한; -v 경로 verbose; --xml
svn log -l 20 -vsvn blame <file>파일의 각 줄에 대해 작성자와 리비전을 표시합니다(praise / annotate).
-r <rev> 지정 리비전 기준 주석; -v 리비전 텍스트 포함
svn blame src/index.ts | tail -20svn cat <url>[@rev]체크아웃 없이 주어진 URL/리비전의 파일 내용을 보여줍니다.
svn cat ^/trunk/README.md@HEAD속성 & 잠금
svn propset <prop> <value> <path>파일 또는 디렉터리에 속성을 설정합니다(예: svn:ignore, svn:executable, svn:mime-type).
-F <file> 값은 파일에서; --revprop 저장소 revprop
svn propset svn:ignore "node_modules\n.DS_Store" .svn propedit <prop> <path>에디터에서 속성 값을 열어 변경합니다.
svn propedit svn:ignore .svn lock <target>다른 클라이언트가 커밋하지 못하도록 파일을 잠급니다(서버 설정 필요).
-m "reason"; --force 잠금 강제 탈취
svn lock images/banner.png -m "editing before release"svn unlock <target>파일 또는 디렉터리의 잠금을 해제합니다.
--force 다른 사람의 잠금 해제
svn unlock images/banner.png저장소 & 정리
svn cleanup작업 사본 정리: 잠금 토큰 제거, 타임스탬프 수정, 보류 중인 작업 완료.
--diff3-cmd / --remove-unversioned 추적 안 됨 정리
svn cleanup /path/to/wcsvn export <url> [<dir>](.svn 메타데이터 없는) 깨끗한 디렉터리 트리를 내보냅니다 — 패키징에 유용.
-r <rev> 특정 리비전; --force 기존 파일 덮어쓰기
svn export ^/tags/v1.2.0 ./release-1.2svn import <path> <url> -m "<msg>"버전 관리되지 않은 트리를 단일 초기 커밋으로 저장소에 추가합니다.
--no-ignore 무시된 파일 포함; --auto-props auto-props 적용
svn import ./src ^/trunk -m "initial import"svn relocate <from-prefix> <to-prefix>작업 사본에 저장된 저장소 URL 접두사를 다시 씁니다(서버 이동).
--strict 매치하지 않는 접두사 거부
svn relocate https://old.svn.example.com https://new.svn.example.com패치
svn diff > patch.diff공유나 svn patch 적용에 적합한 통합 diff 를 생성합니다.
svn diff > /tmp/feature-x.patchsvn patch <patch-file>svn diff 로 생성된 통합 diff 를 작업 사본에 적용합니다.
--dry-run 미리 보기; --reverse-cmd
svn patch --dry-run /tmp/feature-x.patch관련 명령어 치트시트
상표 및 사용 안내
본 명령줄 도구 치트시트 모음은 오픈 커뮤니티 참고 자료입니다. 본 문서에서 언급되는 도구의 명칭, 로고, 상표(예: Git™, Docker™, Kubernetes®, kubectl, PostgreSQL®, MySQL®, Redis™, MongoDB®, Linux™, PowerShell™, Vim™ 등)는 각 권리자의 자산이며, 본 문서에서는 식별 및 참고 목적のみで 사용됩니다.
본 치트시트의 모든 내용은 독립적으로 작성된 단순화된 자체 완결형 참고 자료이며, 어떠한 공식 문서와도 계열·인정·출처 관계가 없습니다. 명령 목록, 플래그 설명, 예제는 모두 저자의 원본 단순화이며, 권위 있는 정보가 필요한 경우 각 도구의 공식 문서를 참조하시기 바랍니다.
명령 구문 및 옵션 플래그는 도구 버전에 따라 다를 수 있습니다. 표시되는 버전 태그는 안정 릴리스를 반영하며, 다른 버전에서는 동작이 다를 수 있습니다. 본 치트시트는 상표권자의 어떠한 선호나 권장도 의미하지 않습니다.
상표권자 또는 저작권자가 사이트의 일부 내용에 대해 권리 침해가 있다고 판단하시는 경우 [email protected]으로 이메일을 보내 주십시오. 유효한 권리 증명을 받은 후 합리적인 기간 내에 관련 내용을 수정하거나 삭제하겠습니다.
본 사이트는 사이트 정보의 이용으로 인해 발생하는 어떠한 직접적 또는 간접적 손해에 대해서도 법적 책임을 지지 않습니다.
Apache Subversion 소개
Apache Subversion(보통 SVN으로 줄여 씀)은 2000년 CollabNet이 처음 출시한 후 Apache 소프트웨어 재단이 관리하는 오픈 소스 중앙 집중형 버전 관리 시스템입니다. SVN은 정식 기록을 단일 서버(보통 Apache HTTP 또는 `svnserve`로 서비스됨)에 보관하며, 리포지토리 전체에 걸쳐 단조 증가하는 리비전 번호로 변경 사항을 추적합니다. 이는 Git의 콘텐츠 해시 방식과 대조적입니다. 현재 안정 버전은 Subversion 1.14+입니다. SVN은 리포지토리를 파일 시스템 트리로 모델링하고, 세 가지 백엔드 형식(1.4부터 기본인 FSFS)을 가지며, 디렉터리를 통한 값싼 분기, 원자적 커밋, 메타데이터를 위한 속성, 공유 컴포넌트를 위한 externals 참조, 1.5부터의 병합 추적을 지원합니다. 중앙 집중식 권위 있는 기록과 세밀한 경로 기반 접근 제어가 오프라인 분기보다 중요한 엔터프라이즈·정부·게임/미디어 스튜디오에서 널리 사용됩니다. 조직이 중앙 집중형 VCS를 강제하거나, 잠금 기능으로 대용량 바이너리 자산을 버전 관리하거나, 레거시 SVN 리포지토리를 유지할 때 사용하세요. SVN 평문 HTTP는 암호화되지 않으므로, 운영 환경에서는 반드시 HTTPS 또는 `svn+ssh`로 운용하세요.
치트시트 버전 1.0.0