U E D R , A S I H C RSS

Pragmatic Version Control WithCVS/What Is Version Control

1. What Is Version Control?

ดžฅ—„œ๋Š” „œ๋กœ ๋‹ค๋ฅธ ˜๋ฏธ๋กœ ‚ฌšฉ๋˜๋Š” šฉ–ด˜  •˜๋ฅผ ๋ชฉ œผ๋กœ •œ๋‹ค.

1.1. the Repository

๊ฐœ๋ฐœ ค‘ธ ”„๋กœ Šธ˜ ๋ชจ๋“  ๋ฒ„ „ด  €žฅ๋˜๋Š” žฅ†Œด๋‹ค. ŒŒผ ‹œŠค…œ, DBผˆ˜๋„ žˆœผ๋ฉฐ, –ด๋–ค ๊ฒฝšฐ—๋Š” 2๊ฐ€ง€๋ฅผ ๊ฐ™ด ‚ฌšฉ•˜๊ธฐ๋„ •œ๋‹ค.
ตœ๊ทผ—๋Š” ๋„Šธ›Œฌ๋ฅผ ดšฉ•ด„œ ›๊ฒฉง€˜ „œ๋ฒ„— กดžฌ•˜๋Š”  €žฅ†Œ—  €žฅ•œ๋‹ค.
๊ฐœค‘—๋Š” ๋„Šธ›Œฌ— —ฐ๊ฒฐ๋˜ง€ •Š€ ƒƒœ—„œ ž‘—…„ •˜๊ณ  ด๋ฅผ ›„— ๋ฐ˜˜‹œผœ ๋™๊ธฐ™”•˜๋Š” ๋งคปค๋‹ˆฆ˜„  œ๊ณต•˜๊ธฐ๋„ •จ. (ex CVS)

1.2. what should we store?

”„๋กœ Šธ˜ ๊ธฐ๋ณธœผ๋กœ  €žฅ๋˜๋Š” †ŒŠคฝ”๋“œ. ๊ทธ ™ธ— ๋ฒ„ „๊ด€๋ฆฌ— •„š”•œ ๊ธฐƒ€ ŒŒผ๋“คด  €žฅ•จ.
›น™:๋งŒ•ฝ ”„๋กœ Šธ˜ „–‰—„œ —†œผ๋ฉด ๊ณค๋ž€•œ ๋ชจ๋“  ๊ฒƒด ๋ฒ„ „๊ด€๋ฆฌ˜ ๋Œ€ƒด๋œ๋‹ค. ฆ‰ ๋ฐ˜๋“œ‹œ ”„๋กœ๊ทธ๋žจ˜ ๋นŒ๋“œ๋งŒด •„๋‹ˆ๋ผ ฐจ›„— •„š”•œ ๋‹ค๋„ ๋ฒ„ „๊ด€๋ฆฌ๋ฅผ •ด•ผ•  •„š”๊ฐ€ žˆ๋‹ค
ž๋™œผ๋กœ ƒ„๋˜๋Š” ž”—ฌŒŒผ˜ ๊ฒฝšฐ ๊ตณดด๋ฅผ ๊ด€๋ฆฌ•  •„š”๋Š” —†๋‹ค. ๋Œ€‹ — Šนˆ˜•œ ดœ (ปดŒŒผ ƒ€ž„. ๋ผด„Šค)๋กœ •„š”•œ ๊ฒฝšฐ—๋Š” ๊ด€๋ฆฌ๋ฅผ •˜๋Š” ๊ฒฝšฐ๋„ žˆ๋‹ค

1.3. workspaces and manipulate files

ง€—ญ ž‘—…๊ณต๊ฐ„(local workspace)๋Š” ›๊ฒฉ—  €žฅ๋œ ŒŒผ๋“ค„ ”„๋กœ๊ทธ๋žจ˜ ๊ฐœ๋ฐœ„ œ„•ด„œ ๊ฐœ๋ฐœž๊ฐ€ ๊ฐ€ง€๊ณ  žˆ๋Š” ปด“จ„— ๋ฐ›•„„œ ”„๋กœ๊ทธ๋žจ„ ˆ˜ ••˜๋„๋ก •˜๋Š” ๊ณต๊ฐ„ž„.
ฒดฌ•„›ƒ(checkout) :  €žฅ†Œ— žˆ๋Š” ŒŒผ„ ž‘—…๊ณต๊ฐ„œผ๋กœ ๋ณต‚ฌ•ด ง€—ญ ๋ณต‚ฌ๋ณธ„ ƒ„.
 „†ก(commit) : ˆ˜ ••œ ŒŒผ„  €žฅ†Œ— ๋ฐ˜˜‹œ‚ค๋Š” ๊ฒƒ.
๋งŒ•ฝ •œ๊ฐœ˜ ŒŒผ„ 2๋ช…˜ ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฐ๊ธฐ ˆ˜ •„ •œ๋’ค commit•œ๋‹ค๋ฉด ด๋•Œ˜ ƒ™ฉ„ –ด๋–ค‹œผ๋กœ ฒ˜๋ฆฌ•  ๊ฒƒธ๊ฐ€?

1.4. project. module, and files

๊ธฐ๋ณธ œผ๋กœ Version Control —„œ ๊ด€๋ฆฌ˜ ๊ฐ€žฅ ž‘€ ๋‹จœ„๋Š” ŒŒผด๋‹ค. ๊ทธ™ธ— •œ๊ฐœ˜ ”„๋กœ Šธ ๋‹จœ„๋กœ  „ฒด ”„๋กœ๊ทธ๋žจ„ ๊ด€๋ฆฌ•˜๊ณ , ๊ทธ •˜๋ถ€— ๋ชจ๋“ˆ„ ๊ธฐค€œผ๋กœ •ด„œ †ŒŠค๋ฅผ ๊ด€๋ฆฌ•œ๋‹ค.

1.5. Where Do Versions Come In?

 €žฅ†Œ๋Š” ๋ง๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ‚ฌ‹ค ๋งŽ€ ๊ณผ •„ณ„œ  €žฅ๋œ๋‹ค.  €žฅ†Œ๋Š” •œ๋ฒˆด๋ผ๋„ ฒดฌธ•œ ด žˆ๋Š” ๋ชจ๋“  ๋ฒ„ „„ ๋ณด๊ด€•œ๋‹ค.
๊ฐ๊ฐ˜ ฒดฌธ๋œ ๋ฒ„ „—๋Š” ฒดฌธ•œ ๋‚ งœ, ‹œ๊ฐ, ๋ณ€๊ฒฝ˜ ๋‚ดšฉ„  €žฅ•˜๋Š” ฃผ„ด ฌ•จ๋œ๋‹ค.
CVS๊ฐ€ ๊ฐ๊ธฐ˜ ŒŒผ— • ๋‹น•˜๋Š” ๋ฒ„ „˜ ๋ฒˆ˜ธ๋Š” ๊ทธ ŒŒผ˜ ๋ฒ„ „ผ๋ฟ  „ฒด ”„๋กœ Šธ˜ ๋ฒ„ „ผ ˆ˜๋Š” —†๋‹ค. (žก๋‹ด:๋ฌผ๋ก  ๋”ฐ๋กœ ๊ธฐ๋Šฅด žˆง€ •Š„๊นŒ? -_-;)

1.6. Tags

๋ฒ„ „ ๊ด€๋ฆฌ ‹œŠค…œ—„œ๋Š”  „ฒด˜ ŒŒผ, ๋ชจ๋“ˆ๋‹จœ„, ”„๋กœ Šธ ๋‹จœ„๋กœ ด— †•œ ŒŒผ๋“ค— ๊ผฌ๋ฆฌ‘œ๋ผ๋Š” ๊ฒƒ„ ๋ถ™ด๋Š” ๊ฒƒด ๊ฐ€๋Šฅ•˜๋‹ค.
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

1.8. Merging

๋ธŒ๋žœน˜๋ฅผ ดšฉ•˜๋ฉด •œ๋ช…˜ ๊ฐœ๋ฐœž๊ฐ€ •œ๊ฐœ˜ ปด“จ„ฐ๋ฅผ ๊ฐ€ง€๊ณ ๋„ ๋ฆด๋ฆฌˆ ๋ฒ„ „˜ ๋ฒ„๊ทธ ˆ˜ •ž‘—…๊ณผ mainlineƒ˜ ”„๋กœ๊ทธ๋žจ˜ ๊ฐœ๋ฐœ„ ๋™‹œ— •˜๋Š” ๊ฒƒด ๊ฐ€๋Šฅ•˜๋‹ค.
ด ๊ฒฝšฐ ๋ธŒ๋žœน˜—„œ ˆ˜ •๋œ ‚ฌ•ญด mainlineƒ—๋„ ๋ฐ˜˜๋˜–ด•ผ•  •„š”๊ฐ€ žˆ„๋•Œ ด๋ฅผ ๋ณ‘•ฉ˜ ๊ณผ •„ †ต•ด„œ •˜๋Š” ๊ฒƒด ๊ฐ€๋Šฅ•˜๋‹ค.

1.9. Locking Options

๋งŒ•ฝ •œ๊ฐœ˜ ŒŒผ„ ๊ฐ€ง€๊ณ  2๋ช…˜ ‚ฌ๋žŒด ๋™‹œ— ˆ˜ •ž‘—…„ณ„œ ฒดฌธ•˜๊ฒŒ๋œ๋‹ค๋ฉด –ด๋–ค ƒ™ฉด ๋ฒŒ–ดˆ๊นŒ? •„๋งˆ ด๋Œ€๋กœ๋Š” •œ๊ฐœ˜ ŒŒผด “ฐ—ฌง€๊ณ  ๋‹ค๋ฅธ ŒŒผด ๊ทธ ŒŒผ„ ๋ฎ–ด “ฐ๋Š” ƒ™ฉด ๋ฒŒ–ดˆ ๊ฒƒด๋‹ค.
—„๊ฒฉ•œ ž ๊ธˆ
ŒŒผ„ ฒดฌ•„›ƒ•˜๋Š” ‹œ ๋ถ€„ฐ ๊ทธ ŒŒผ๋“ค€ ฝ๊ธฐ „šฉ˜ †„œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค. ๋”ฐ๋ผ„œ ๋‹ค๋ฅธ ‚ฌ๋žŒด ๊ทธ ŒŒผ„ ฒดฌ•„›ƒ•˜๋”๋ผ๋„ ˆ˜ •„ •  ˆ˜๋Š” —†๊ฒŒ๋˜๋Š” ๊ฒƒด๋‹ค.

๋‚™๊ด€  ž ๊ธˆ
๋‹คˆ˜˜ ฒดฌ•„›ƒ„ —ˆšฉ•˜๋Š” ๋Œ€‹ — ฒดฌธ„ •˜๋Š” ๋•Œ—,  €žฅ†Œ—  €žฅ๋œ ŒŒผ๋“ค„ ๋กœปฌ ž‘—…๊ณต๊ฐ„— ๋ฐ˜˜‹œ‚จ๋‹ค.

Original
~cpp 
public class File1 {
	public String getName() {
		return "Wibble";
	}
	public int getSize() {
		return 42;
	}
}

Fix 01
~cpp 
public class File1 {
	public String getName() {
		return "WIBBLE";
	}
	public int getSize() {
		return 42;
	}
}

Fix 02
~cpp 
public class File1 {
	public String getName() {
		return "Wibble";
	}
	public int getSize() {
		return 99;
	}
}

ƒ๊ธฐ™€ ๊ฐ™€ ‹œผ๋กœ †ŒŠค๋ฅผ ˆ˜ ••œ๋’ค fix01, fix02๋ฅผ ˆœฐจ œผ๋กœ ฒดฌธ•˜๋ฉด fix01— ˜•ด„œ  €žฅ†Œ— žˆ๋Š” ŒŒผด ๊ฐ‹ ๋˜—ˆ๊ธฐ ๋•Œ๋ฌธ— fix02๊ฐ€ ฒดฌธ ๋˜๋Š” ‹œ —„œ ถฉ๋Œด ผ–ด๋‚˜๊ฒŒ ๋œ๋‹ค. ด๊ฒฝšฐ CVS๋Š” fix02˜ †ŒŠค—„œ fix01— ๋ฐ˜˜๋œ 3๋ฒˆงธ „˜ ๋ณ€๊ฒฝ๋‚ดšฉ„ ๋ณ‘•ฉ•˜—ฌ ๋กœปฌ ž‘—… ๊ณต๊ฐ„— ๋ฐ˜˜•˜๊ณ  ฒดฌธ•˜๊ฒŒ๋œ๋‹ค.
ผ๋ฐ˜ œผ๋กœ ๋‚™๊ด€  ž ๊ธˆœผ๋กœ ๊ตฌ˜„๋œ ~cpp VersionControl„ „ ˜ธ•œ๋‹ค.

1.10. Configuration Management (CM)

˜•ƒ๊ด€๋ฆฌ(Configuration Management) : ”„๋กœ Šธ˜ ธ๊ณ„‹œ •„š”•œ ๋ชจ๋“  ๊ฒƒ๋“ค„ ŒŒ•…•˜๋Š” ๋ฐฉ๋ฒ•.
----
PragmaticVersionControlWithCVS
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:02
Processing time 0.0230 sec