GitHub는 HTTPS 프로토콜을 통해 Subversion 클라이언트를 지원합니다. Subversion 브리지를 사용하여 svn 명령을 GitHub에 전달합니다.
Note
GitHub 버전 3.13에서 Subversion 지원이 제거됩니다. 자세한 내용은 GitHub 블로그를 참조하세요.
GitHub에서 지원되는 Subversion 기능
체크 아웃
가장 먼저 할 일은 Subversion 체크 아웃입니다. Git 복제본은 작업 디렉터리(파일을 편집하는 위치)를 리포지토리 데이터와 별도로 유지하므로 작업 디렉터리에는 한 번에 하나의 분기만 있습니다.
Subversion 체크 아웃은 다릅니다. 작업 디렉터리에서 리포지토리 데이터를 함께 사용하므로 체크 아웃한 각 분기와 태그에 대한 작업 디렉터리가 있습니다. 분기 및 태그가 많은 리포지토리의 경우 모든 항목을 체크 아웃하려면 대역폭 부담이 클 수 있으므로 부분 체크 아웃으로 시작해야 합니다.
-
GitHub에서 리포지토리의 기본 페이지로 이동합니다.
-
파일 목록 위에서 코드를 클릭합니다.
-
리포지토리의 URL을 복사합니다.
-
HTTPS를 사용하여 리포지토리를 복제하려면 "HTTPS"에서 을 클릭합니다.
-
조직의 SSH 인증 기관에서 발급한 인증서를 포함하여 SSH 키를 사용하여 리포지토리를 복제하려면 SSH를 클릭한 다음, 을 클릭합니다.
-
GitHub CLI를 사용하여 리포지토리를 복제하려면 GitHub CLI 를 클릭한 다음, 을 클릭합니다.
-
-
리포지토리의 빈 체크 아웃을 만듭니다.
$ svn co --depth empty https://github.com/USER/REPO > Checked out revision 1. $ cd REPO
-
trunk
분기를 가져옵니다. Subversion 브리지는 트렁크를 Git HEAD 분기에 매핑합니다.$ svn up trunk > A trunk > A trunk/README.md > A trunk/gizmo.rb > Updated to revision 1.
-
branches
디렉터리의 빈 체크 아웃을 가져옵니다.HEAD
이외의 모든 분기가 여기에 있으며, 기능 분기를 만들 위치입니다.$ svn up --depth empty branches Updated to revision 1.
분기 만들기
GitHub에 대한 Subversion 브리지를 사용하여 분기를 만들 수도 있습니다.
svn 클라이언트에서 trunk
를 업데이트하여 기본 분기가 최신 상태인지 확인합니다.
$ svn up trunk
> At revision 1.
다음으로, svn copy
를 사용하여 새 분기를 만들 수 있습니다.
$ svn copy trunk branches/more_awesome
> A branches/more_awesome
$ svn commit -m 'Added more_awesome topic branch'
> Adding branches/more_awesome
> Committed revision 2.
리포지토리의 분기 드롭다운에 새 분기가 있는지 확인할 수 있습니다.
명령줄을 통해 새 분기를 확인할 수도 있습니다.
$ git fetch
> From https://github.com/USER/REPO/
> * [new branch] more_awesome -> origin/more_awesome
Subversion에 커밋
몇 가지 기능을 추가하고 일부 버그를 수정한 후에는 변경 내용을 GitHub에 커밋하는 것이 좋습니다. 익숙한 Subversion처럼 동작합니다. 파일을 편집하고 svn commit
을 사용하여 변경 내용을 기록합니다.
$ svn status
> M gizmo.rb
$ svn commit -m 'Guard against known problems'
> Sending more_awesome/gizmo.rb
> Transmitting file data .
> Committed revision 3.
$ svn status
> ? test
$ svn add test
> A test
> A test/gizmo_test.rb
$ svn commit -m 'Test coverage for problems'
> Adding more_awesome/test
> Adding more_awesome/test/gizmo_test.rb
> Transmitting file data .
> Committed revision 4.
분기 간 전환
분기 간에 전환하려면 trunk
체크 아웃으로 시작하는 것이 좋습니다.
svn co --depth empty https://github.com/USER/REPO/trunk
그런 다음, 다른 분기로 전환할 수 있습니다.
svn switch https://github.com/USER/REPO/branches/more_awesome
Subversion 커밋에 대한 Git 커밋 SHA 찾기
GitHub의 Subversion 서버는 각 Subversion 커밋에 대한 Git 커밋 SHA를 공개합니다.
커밋 SHA를 보려면 버전이 지정되지 않은 git-commit
원격 속성을 요청해야 합니다.
$ svn propget git-commit --revprop -r HEAD https://github.com/USER/REPO
05fcc584ed53d7b0c92e116cb7e64d198b13c4e3
예를 들어 이 커밋 SHA를 사용하여 GitHub에서 해당 Git 커밋을 조회할 수 있습니다.