Skip to main content

Subversion 클라이언트 지원

GitHub 리포지토리는 Git 및 SVN(Subversion) 클라이언트 모두에서 액세스할 수 있습니다. 이 문서에서는 GitHub에서 Subversion 클라이언트 사용하기와 발생할 수 있는 몇 가지 일반적인 문제에 대해 설명합니다.

GitHub는 HTTPS 프로토콜을 통해 Subversion 클라이언트를 지원합니다. Subversion 브리지를 사용하여 svn 명령을 GitHub에 전달합니다.

참고: GitHub 버전 3.13에서 Subversion 지원이 제거됩니다. 자세한 내용은 GitHub 블로그를 참조하세요.

GitHub에서 지원되는 Subversion 기능

체크 아웃

가장 먼저 할 일은 Subversion 체크 아웃입니다. Git 복제본은 작업 디렉터리(파일을 편집하는 위치)를 리포지토리 데이터와 별도로 유지하므로 작업 디렉터리에는 한 번에 하나의 분기만 있습니다.

Subversion 체크 아웃은 다릅니다. 작업 디렉터리에서 리포지토리 데이터를 함께 사용하므로 체크 아웃한 각 분기와 태그에 대한 작업 디렉터리가 있습니다. 분기 및 태그가 많은 리포지토리의 경우 모든 항목을 체크 아웃하려면 대역폭 부담이 클 수 있으므로 부분 체크 아웃으로 시작해야 합니다.

  1. GitHub Enterprise Server 인스턴스에서 리포지토리의 기본 페이지로 이동합니다.

  2. 파일 목록 위에서 코드를 클릭합니다.

    리포지토리의 방문 페이지에 있는 파일 목록의 스크린샷. "코드" 단추는 진한 주황색 윤곽선으로 강조 표시됩니다.

  3. 리포지토리의 URL을 복사합니다.

    • HTTPS를 사용하여 리포지토리를 복제하려면 "HTTPS"에서 을 클릭합니다.

    • 조직의 SSH 인증 기관에서 발급한 인증서를 포함하여 SSH 키를 사용하여 리포지토리를 복제하려면 SSH를 클릭한 다음, 을 클릭합니다.

    • GitHub CLI를 사용하여 리포지토리를 복제하려면 GitHub CLI 를 클릭한 다음, 을 클릭합니다.

      "코드" 드롭다운 메뉴의 스크린샷. 리포지토리의 HTTPS URL 오른쪽에 복사 아이콘이 진한 주황색으로 표시됩니다.

  4. 리포지토리의 빈 체크 아웃을 만듭니다.

    $ svn co --depth empty https://github.com/USER/REPO
    > Checked out revision 1.
    $ cd REPO
    
  5. trunk 분기를 가져옵니다. Subversion 브리지는 트렁크를 Git HEAD 분기에 매핑합니다.

    $ svn up trunk
    > A    trunk
    > A    trunk/README.md
    > A    trunk/gizmo.rb
    > Updated to revision 1.
    
  6. 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 커밋을 조회할 수 있습니다.