Skip to main content

์ด ๋ฒ„์ „์˜ GitHub Enterprise๋Š” ๋‹ค์Œ ๋‚ ์งœ์— ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 2025-04-03. ์ค‘์š”ํ•œ ๋ณด์•ˆ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋„ ํŒจ์น˜ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋” ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ, ํ–ฅ์ƒ๋œ ๋ณด์•ˆ, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ์ตœ์‹  ๋ฒ„์ „์˜ GitHub Enterprise Server๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค. ์—…๊ทธ๋ ˆ์ด๋“œ์— ๋Œ€ํ•œ ๋„์›€๋ง์€ GitHub Enterprise ์ง€์›์— ๋ฌธ์˜ํ•˜์„ธ์š”.

Subversion ํด๋ผ์ด์–ธํŠธ ์ง€์›

GitHub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” Git ๋ฐ SVN(Subversion) ํด๋ผ์ด์–ธํŠธ ๋ชจ๋‘์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” GitHub์—์„œ Subversion ํด๋ผ์ด์–ธํŠธ ์‚ฌ์šฉํ•˜๊ธฐ์™€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

GitHub๋Š” HTTPS ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด Subversion ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Subversion ๋ธŒ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ svn ๋ช…๋ น์„ GitHub์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

Note

GitHub ๋ฒ„์ „ 3.13์—์„œ Subversion ์ง€์›์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

GitHub์—์„œ ์ง€์›๋˜๋Š” Subversion ๊ธฐ๋Šฅ

์ฒดํฌ ์•„์›ƒ

๊ฐ€์žฅ ๋จผ์ € ํ•  ์ผ์€ Subversion ์ฒดํฌ ์•„์›ƒ์ž…๋‹ˆ๋‹ค. Git ๋ณต์ œ๋ณธ์€ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ(ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๋Š” ์œ„์น˜)๋ฅผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฐ์ดํ„ฐ์™€ ๋ณ„๋„๋กœ ์œ ์ง€ํ•˜๋ฏ€๋กœ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์—๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ถ„๊ธฐ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

Subversion ์ฒดํฌ ์•„์›ƒ์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ฒดํฌ ์•„์›ƒํ•œ ๊ฐ ๋ถ„๊ธฐ์™€ ํƒœ๊ทธ์— ๋Œ€ํ•œ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๊ธฐ ๋ฐ ํƒœ๊ทธ๊ฐ€ ๋งŽ์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์ฒดํฌ ์•„์›ƒํ•˜๋ ค๋ฉด ๋Œ€์—ญํญ ๋ถ€๋‹ด์ด ํด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ถ€๋ถ„ ์ฒดํฌ ์•„์›ƒ์œผ๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. GitHub์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ธฐ๋ณธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  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 ์ปค๋ฐ‹์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.