1. What Is Version Control? ¶
์ด์ฅ์์๋ ์๋ก ๋ค๋ฅธ ์๋ฏธ๋ก ์ฌ์ฉ๋๋ ์ฉ์ด์ ์ ์๋ฅผ ๋ชฉ์ ์ผ๋ก ํ๋ค.
1.1. the Repository ¶
๊ฐ๋ฐ ์ค์ธ ํ๋ก์ ํธ์ ๋ชจ๋ ๋ฒ์ ์ด ์ ์ฅ๋๋ ์ฅ์์ด๋ค. ํ์ผ ์์คํ
, DB์ผ์๋ ์์ผ๋ฉฐ, ์ด๋ค ๊ฒฝ์ฐ์๋ 2๊ฐ์ง๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
์ต๊ทผ์๋ ๋คํธ์ํฌ๋ฅผ ์ด์ฉํด์ ์๊ฒฉ์ง์ ์๋ฒ์ ์กด์ฌํ๋ ์ ์ฅ์์ ์ ์ฅํ๋ค.
๊ฐ์ค์๋ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋์ง ์์ ์ํ์์ ์์ ์ ํ๊ณ ์ด๋ฅผ ํ์ ๋ฐ์์์ผ ๋๊ธฐํํ๋ ๋งค์ปค๋์ฆ์ ์ ๊ณตํ๊ธฐ๋ ํจ. (ex CVS)
์ต๊ทผ์๋ ๋คํธ์ํฌ๋ฅผ ์ด์ฉํด์ ์๊ฒฉ์ง์ ์๋ฒ์ ์กด์ฌํ๋ ์ ์ฅ์์ ์ ์ฅํ๋ค.
๊ฐ์ค์๋ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋์ง ์์ ์ํ์์ ์์ ์ ํ๊ณ ์ด๋ฅผ ํ์ ๋ฐ์์์ผ ๋๊ธฐํํ๋ ๋งค์ปค๋์ฆ์ ์ ๊ณตํ๊ธฐ๋ ํจ. (ex CVS)
1.2. what should we store? ¶
ํ๋ก์ ํธ์ ๊ธฐ๋ณธ์ผ๋ก ์ ์ฅ๋๋ ์์ค์ฝ๋. ๊ทธ ์ธ์ ๋ฒ์ ๊ด๋ฆฌ์ ํ์ํ ๊ธฐํ ํ์ผ๋ค์ด ์ ์ฅํจ.
์์น:๋ง์ฝ ํ๋ก์ ํธ์ ์งํ์์ ์์ผ๋ฉด ๊ณค๋ํ ๋ชจ๋ ๊ฒ์ด ๋ฒ์ ๊ด๋ฆฌ์ ๋์์ด๋๋ค. ์ฆ ๋ฐ๋์ ํ๋ก๊ทธ๋จ์ ๋น๋๋ง์ด ์๋๋ผ ์ฐจํ์ ํ์ํ ๋คํ๋ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํด์ผํ ํ์๊ฐ ์๋ค
์์น:๋ง์ฝ ํ๋ก์ ํธ์ ์งํ์์ ์์ผ๋ฉด ๊ณค๋ํ ๋ชจ๋ ๊ฒ์ด ๋ฒ์ ๊ด๋ฆฌ์ ๋์์ด๋๋ค. ์ฆ ๋ฐ๋์ ํ๋ก๊ทธ๋จ์ ๋น๋๋ง์ด ์๋๋ผ ์ฐจํ์ ํ์ํ ๋คํ๋ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํด์ผํ ํ์๊ฐ ์๋ค
์๋์ผ๋ก ์์ฑ๋๋ ์์ฌํ์ผ์ ๊ฒฝ์ฐ ๊ตณ์ด์ด๋ฅผ ๊ด๋ฆฌํ ํ์๋ ์๋ค. ๋์ ์ ํน์ํ ์ด์ (์ปดํ์ผ ํ์. ๋ผ์ด์ผ์ค)๋ก ํ์ํ ๊ฒฝ์ฐ์๋ ๊ด๋ฆฌ๋ฅผ ํ๋ ๊ฒฝ์ฐ๋ ์๋ค |
1.3. workspaces and manipulate files ¶
์ง์ญ ์์
๊ณต๊ฐ(local workspace)๋ ์๊ฒฉ์ ์ ์ฅ๋ ํ์ผ๋ค์ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ์ ์ํด์ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ง๊ณ ์๋ ์ปดํจํฐ์ ๋ฐ์์ ํ๋ก๊ทธ๋จ์ ์์ ํ๋๋ก ํ๋ ๊ณต๊ฐ์.
์ฒดํฌ์์(checkout) : ์ ์ฅ์์ ์๋ ํ์ผ์ ์์ ๊ณต๊ฐ์ผ๋ก ๋ณต์ฌํด ์ง์ญ ๋ณต์ฌ๋ณธ์ ์์ฑ.
์ ์ก(commit) : ์์ ํ ํ์ผ์ ์ ์ฅ์์ ๋ฐ์์ํค๋ ๊ฒ.
๋ง์ฝ ํ๊ฐ์ ํ์ผ์ 2๋ช ์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ฐ๊ธฐ ์์ ์ ํ๋ค commitํ๋ค๋ฉด ์ด๋์ ์ํฉ์ ์ด๋ค์์ผ๋ก ์ฒ๋ฆฌํ ๊ฒ์ธ๊ฐ?
์ฒดํฌ์์(checkout) : ์ ์ฅ์์ ์๋ ํ์ผ์ ์์ ๊ณต๊ฐ์ผ๋ก ๋ณต์ฌํด ์ง์ญ ๋ณต์ฌ๋ณธ์ ์์ฑ.
์ ์ก(commit) : ์์ ํ ํ์ผ์ ์ ์ฅ์์ ๋ฐ์์ํค๋ ๊ฒ.
๋ง์ฝ ํ๊ฐ์ ํ์ผ์ 2๋ช ์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ฐ๊ธฐ ์์ ์ ํ๋ค commitํ๋ค๋ฉด ์ด๋์ ์ํฉ์ ์ด๋ค์์ผ๋ก ์ฒ๋ฆฌํ ๊ฒ์ธ๊ฐ?
1.4. project. module, and files ¶
๊ธฐ๋ณธ์ ์ผ๋ก Version Control ์์ ๊ด๋ฆฌ์ ๊ฐ์ฅ ์์ ๋จ์๋ ํ์ผ์ด๋ค. ๊ทธ์ธ์ ํ๊ฐ์ ํ๋ก์ ํธ ๋จ์๋ก ์ ์ฒด ํ๋ก๊ทธ๋จ์ ๊ด๋ฆฌํ๊ณ , ๊ทธ ํ๋ถ์ ๋ชจ๋์ ๊ธฐ์ค์ผ๋ก ํด์ ์์ค๋ฅผ ๊ด๋ฆฌํ๋ค.
1.5. Where Do Versions Come In? ¶
์ ์ฅ์๋ ๋ง๊ณผ๋ ๋ค๋ฅด๊ฒ ์ฌ์ค ๋ง์ ๊ณผ์ ์ ๊ฑฐ์ณ์ ์ ์ฅ๋๋ค. ์ ์ฅ์๋ ํ๋ฒ์ด๋ผ๋ ์ฒดํฌ์ธํ์ ์ด ์๋ ๋ชจ๋ ๋ฒ์ ์ ๋ณด๊ดํ๋ค.
๊ฐ๊ฐ์ ์ฒดํฌ์ธ๋ ๋ฒ์ ์๋ ์ฒดํฌ์ธํ ๋ ์ง, ์๊ฐ, ๋ณ๊ฒฝ์ ๋ด์ฉ์ ์ ์ฅํ๋ ์ฃผ์์ด ํฌํจ๋๋ค.
CVS๊ฐ ๊ฐ๊ธฐ์ ํ์ผ์ ํ ๋นํ๋ ๋ฒ์ ์ ๋ฒํธ๋ ๊ทธ ํ์ผ์ ๋ฒ์ ์ผ๋ฟ ์ ์ฒด ํ๋ก์ ํธ์ ๋ฒ์ ์ผ ์๋ ์๋ค. (์ก๋ด:๋ฌผ๋ก ๋ฐ๋ก ๊ธฐ๋ฅ์ด ์์ง ์์๊น? -_-;)
๊ฐ๊ฐ์ ์ฒดํฌ์ธ๋ ๋ฒ์ ์๋ ์ฒดํฌ์ธํ ๋ ์ง, ์๊ฐ, ๋ณ๊ฒฝ์ ๋ด์ฉ์ ์ ์ฅํ๋ ์ฃผ์์ด ํฌํจ๋๋ค.
CVS๊ฐ ๊ฐ๊ธฐ์ ํ์ผ์ ํ ๋นํ๋ ๋ฒ์ ์ ๋ฒํธ๋ ๊ทธ ํ์ผ์ ๋ฒ์ ์ผ๋ฟ ์ ์ฒด ํ๋ก์ ํธ์ ๋ฒ์ ์ผ ์๋ ์๋ค. (์ก๋ด:๋ฌผ๋ก ๋ฐ๋ก ๊ธฐ๋ฅ์ด ์์ง ์์๊น? -_-;)
1.6. Tags ¶
๋ฒ์ ๊ด๋ฆฌ ์์คํ
์์๋ ์ ์ฒด์ ํ์ผ, ๋ชจ๋๋จ์, ํ๋ก์ ํธ ๋จ์๋ก ์ด์ ์ํ ํ์ผ๋ค์ ๊ผฌ๋ฆฌํ๋ผ๋ ๊ฒ์ ๋ถ์ด๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
PreRelease2
PreRelease2
~cpp file1.java 1.11 file2.java 1.7 file3.java 1.10์ด ๊ฒฝ์ฐ PreRelease2๋ฅผ ๋ถ๋ฌ๋ค์ด๊ฒ ๋๋ฉด ์๊ธฐ์ ๋ฒ์ ์ ํ์ผ๋ค์ด ๋ถ๋ฌ๋ค์ฌ์ง๊ฒ ๋๋ค. ํ๊ทธ๋ ํ๋ก์ ํธ์ ์งํ์ ์์ด์ ์ค์ํ ์ผ์ด ๋ฐ์ํ ์์ ์ ๊ธฐ๋กํ๋ ๊ฒ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
1.7. Branches ¶
๊ฐ๋ฐ์ค์ฌ์ถ(mainline) : ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐํ๊ฒฝํ์์ ๊ฐ๋ฐ์๋ค์ ๋์ผํ ์ฝ๋ ๊ธฐ๋ฐ์ ๊ฐ์ง๊ณ ์์
์ ํ๋ค. ์ฒดํฌ์์, ๊ฐ์ ํ์ ๋ง๋ค์ด์, ๋ณ๊ฒฝ์ฌํญ์ ์ฒดํฌ์ธํ๋ฉด ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ์๋ก์ ์์
์ ๊ณต์ ํ๊ฒ ๋๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ๊ฐ๋ฐํ๋ฆ์ ์ผ์ปฌ์ด ๊ฐ๋ฐ์ค์ฌ์ถ์ด๋ผ ํจ.
์ด๋ฐ ๊ฐ๋ฐ์ค์ฌ์ถ์์์ ๋ง์ฝ ํน์ ์์ ์์ ํ๋ก๊ทธ๋จ์ ๋ฆด๋ฆฌ์ฆ ๋ฒ์ ์ด ์์ฑ๋์ด์ QA๊ณผ์ ์ผ๋ก ๋ค์ด๊ฐ๋ค๊ณ ์๊ฐํด๋ณด์. ์ด๋, ํ๋ก์ ํธ์ ๋ค๋ฅธ ํ์๋ค๊ณผ ๋์์ ๊ฐ๋ฐ์ ์งํ์์ผ ๋๊ฐ๋ฉด์, QA๊ณผ์ ์์ ๋ฐ์๋ ์น๋ช
์ ์ธ ๋ฒ๊ทธ๋ฅผ ๋ณธ๋์ ๊ฐ๋ฐ์ค์ฌ์ถ์์ ๋ฐ์์ํค๊ธฐ ์ํด์ ๋ง๋ค์ด์ง ๊ฐ๋
์. (๊ทธ๋ฆผ์ด ์์ด์ผ ์ดํด๊ฐ ์ฌ์ธ๋ฏ. ๊ธ๋ง ์ฝ์ด์๋ SE๋ฅผ ๋ฃ์ง ์์ ์ด์ ์ดํด ํ๋ค์ด๋ณด์.)
๋ธ๋์น๋ฅผ ๋ง๋ค๊ฒ ๋๋ฉด ๊ทธ ์์ ์์ ๋ธ๋์น๋ก ๋ง๋ค์ด์ง ์์ค๋ ๊ฐ๋ฐ์ ์ค์ฌ์ถ์ ์์์ ๋น ์ ธ๋์์ ๊ธฐ๋ณธ ๊ฐ๋ฐ์ถ๊ณผ ๋ค๋ฅธ ๊ฐ๋ฐ์ ํ ์ ์๋ค. ๋ํ ์ด๋ ๊ฒ ๋ถ๊ธฐ๋ ํ๋ก์ ํธ์ ๋ณ๊ฒฝ๋ถ๋ถ์ ๋ณธ๋์ ๊ฐ๋ฐ์ค์ฌ์ถ์ ์์ ๋ฐ์์ํค๋ ๊ฒ๋ํ ๊ฐ๋ฅํ๋ค. ๋ํ ์ด ๋ฆด๋ฆฌ์ฆ ์์ ์ ์ง๋์ ๊ฐ๋ฐ์ค์ฌ์ถ์ด ์๋น๋ถ๋ถ ์งํ์ด ๋ ์ํ์์ ์๋น์๊ฐ ๋ฆด๋ฆฌ์ฆ๋ฒ์ ์ ๋ฒ๊ทธ๋ฅผ ๋ณด๊ณ ํ์ฌ, ์ด ๋ฒ๊ทธ๋ฅผ ๊ณ ์ณ์ผํ ํ์๊ฐ ์๊ฒผ์๋ ๊ฐ๋ฐ์๋ค์ ์๋ก ์์ค๋ฅผ ๋ง๋ค ํ์์์ด ๋จ์ง ๋ฆด๋ฆฌ์ฆ ์์ ์ ๋ธ๋์น๋ก ์ฎ๊ฒจ์ ์์
์ ํ๊ณ , ํจ์น๋ฅผ ๋ง๋ค์ด ๋ด๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
๋ฒ์ ๋ฒํธ
mainline : 1.14 -> 1.15
branches : 1.14.2.1 -> 1.14.2.2
mainline : 1.14 -> 1.15
branches : 1.14.2.1 -> 1.14.2.2
1.8. Merging ¶
๋ธ๋์น๋ฅผ ์ด์ฉํ๋ฉด ํ๋ช
์ ๊ฐ๋ฐ์๊ฐ ํ๊ฐ์ ์ปดํจํฐ๋ฅผ ๊ฐ์ง๊ณ ๋ ๋ฆด๋ฆฌ์ฆ ๋ฒ์ ์ ๋ฒ๊ทธ ์์ ์์
๊ณผ mainline์์ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ์ ๋์์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
์ด ๊ฒฝ์ฐ ๋ธ๋์น์์ ์์ ๋ ์ฌํญ์ด mainline์์๋ ๋ฐ์๋์ด์ผํ ํ์๊ฐ ์์๋ ์ด๋ฅผ ๋ณํฉ์ ๊ณผ์ ์ ํตํด์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
์ด ๊ฒฝ์ฐ ๋ธ๋์น์์ ์์ ๋ ์ฌํญ์ด mainline์์๋ ๋ฐ์๋์ด์ผํ ํ์๊ฐ ์์๋ ์ด๋ฅผ ๋ณํฉ์ ๊ณผ์ ์ ํตํด์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
1.9. Locking Options ¶
๋ง์ฝ ํ๊ฐ์ ํ์ผ์ ๊ฐ์ง๊ณ 2๋ช
์ ์ฌ๋์ด ๋์์ ์์ ์์
์ ๊ฑฐ์ณ์ ์ฒดํฌ์ธํ๊ฒ๋๋ค๋ฉด ์ด๋ค ์ํฉ์ด ๋ฒ์ด์ง๊น? ์๋ง ์ด๋๋ก๋ ํ๊ฐ์ ํ์ผ์ด ์ฐ์ฌ์ง๊ณ ๋ค๋ฅธ ํ์ผ์ด ๊ทธ ํ์ผ์ ๋ฎ์ด ์ฐ๋ ์ํฉ์ด ๋ฒ์ด์ง ๊ฒ์ด๋ค.
์๊ฒฉํ ์ ๊ธ
ํ์ผ์ ์ฒดํฌ์์ํ๋ ์์ ๋ถํฐ ๊ทธ ํ์ผ๋ค์ ์ฝ๊ธฐ์ ์ฉ์ ์์ฑ์ผ๋ก ๋ณ๊ฒฝ๋๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ ์ฌ๋์ด ๊ทธ ํ์ผ์ ์ฒดํฌ์์ํ๋๋ผ๋ ์์ ์ ํ ์๋ ์๊ฒ๋๋ ๊ฒ์ด๋ค.
๋๊ด์ ์ ๊ธ
๋ค์์ ์ฒดํฌ์์์ ํ์ฉํ๋ ๋์ ์ ์ฒดํฌ์ธ์ ํ๋ ๋์, ์ ์ฅ์์ ์ ์ฅ๋ ํ์ผ๋ค์ ๋ก์ปฌ ์์ ๊ณต๊ฐ์ ๋ฐ์์ํจ๋ค.
Original
Fix 01
Fix 02
์๊ธฐ์ ๊ฐ์ ์์ผ๋ก ์์ค๋ฅผ ์์ ํ๋ค fix01, fix02๋ฅผ ์์ฐจ์ ์ผ๋ก ์ฒดํฌ์ธํ๋ฉด fix01์ ์ํด์ ์ ์ฅ์์ ์๋ ํ์ผ์ด ๊ฐฑ์ ๋์๊ธฐ ๋๋ฌธ์ fix02๊ฐ ์ฒดํฌ์ธ ๋๋ ์์ ์์ ์ถฉ๋์ด ์ผ์ด๋๊ฒ ๋๋ค. ์ด๊ฒฝ์ฐ CVS๋ fix02์ ์์ค์์ fix01์ ๋ฐ์๋ 3๋ฒ์งธ ์ค์ ๋ณ๊ฒฝ๋ด์ฉ์ ๋ณํฉํ์ฌ ๋ก์ปฌ ์์
๊ณต๊ฐ์ ๋ฐ์ํ๊ณ ์ฒดํฌ์ธํ๊ฒ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋๊ด์ ์ ๊ธ์ผ๋ก ๊ตฌํ๋
์๊ฒฉํ ์ ๊ธ
ํ์ผ์ ์ฒดํฌ์์ํ๋ ์์ ๋ถํฐ ๊ทธ ํ์ผ๋ค์ ์ฝ๊ธฐ์ ์ฉ์ ์์ฑ์ผ๋ก ๋ณ๊ฒฝ๋๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ ์ฌ๋์ด ๊ทธ ํ์ผ์ ์ฒดํฌ์์ํ๋๋ผ๋ ์์ ์ ํ ์๋ ์๊ฒ๋๋ ๊ฒ์ด๋ค.
๋ค์์ ์ฒดํฌ์์์ ํ์ฉํ๋ ๋์ ์ ์ฒดํฌ์ธ์ ํ๋ ๋์, ์ ์ฅ์์ ์ ์ฅ๋ ํ์ผ๋ค์ ๋ก์ปฌ ์์ ๊ณต๊ฐ์ ๋ฐ์์ํจ๋ค.
~cpp public class File1 { public String getName() { return "Wibble"; } public int getSize() { return 42; } }
~cpp public class File1 { public String getName() { return "WIBBLE"; } public int getSize() { return 42; } }
~cpp public class File1 { public String getName() { return "Wibble"; } public int getSize() { return 99; } }
์ผ๋ฐ์ ์ผ๋ก ๋๊ด์ ์ ๊ธ์ผ๋ก ๊ตฌํ๋
~cpp VersionControl
์ ์ ํธํ๋ค.
1.10. Configuration Management (CM) ¶
ํ์๊ด๋ฆฌ(Configuration Management) : ํ๋ก์ ํธ์ ์ธ๊ณ์ ํ์ํ ๋ชจ๋ ๊ฒ๋ค์ ํ์
ํ๋ ๋ฐฉ๋ฒ.
----
PragmaticVersionControlWithCVS
----
PragmaticVersionControlWithCVS