about summary refs log tree commit diff
path: root/usth/ICT2.7/P1L4 Version Control Subtitles/9 - Two Main Types of VCS - lang_en_vs5.srt
blob: 3c6eba4eb3aa2eac7f0d00e038babc61ebedd30f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
1
00:00:00,160 --> 00:00:01,970
Something else I want to mention is that there

2
00:00:01,970 --> 00:00:05,460
are many different version control systems but we can classify

3
00:00:05,460 --> 00:00:09,250
them normally in two main types: centralized VCS's and

4
00:00:09,250 --> 00:00:13,230
decentralized VCS's. So what is the difference between these two?

5
00:00:13,230 --> 00:00:16,750
Let's use again our friends Janet and Brett.

6
00:00:16,750 --> 00:00:19,510
In the case of a centralized version control system

7
00:00:19,510 --> 00:00:22,290
there is a single centralized, as the name says,

8
00:00:22,290 --> 00:00:25,230
repository. On which they are commiting their files. So when

9
00:00:25,230 --> 00:00:27,290
Janet commits a file. The file will go from

10
00:00:27,290 --> 00:00:30,390
her local working directory to the repository, and the same

11
00:00:30,390 --> 00:00:33,520
will happen to Brett. The decentralized system is a little

12
00:00:33,520 --> 00:00:37,310
more interesting because in this case, they will both have

13
00:00:37,310 --> 00:00:40,790
sort of a local repository in which they can commit

14
00:00:40,790 --> 00:00:43,970
their changes. So they can commit changes without the other

15
00:00:43,970 --> 00:00:47,940
users of the VCS being able to see these changes.

16
00:00:47,940 --> 00:00:50,300
And when they're happy with the version. And when they're

17
00:00:50,300 --> 00:00:53,900
ready to release the version, they can push it to a central

18
00:00:53,900 --> 00:00:56,840
repository. And at that point, it will become available to the other

19
00:00:56,840 --> 00:01:01,100
users of the repository. To the other users of the VCS. There

20
00:01:01,100 --> 00:01:02,870
are several advantages in a distributive

21
00:01:02,870 --> 00:01:04,300
system. I'm just going to mention a few,

22
00:01:04,300 --> 00:01:07,520
because there are really many. One is the fact of having this

23
00:01:07,520 --> 00:01:10,570
local version. If you used VCS before, I'm sure you've been in

24
00:01:10,570 --> 00:01:13,280
the situation in which you want to kind of take a snapshot

25
00:01:13,280 --> 00:01:15,820
of what you have. But you don't want that snapshot to be available

26
00:01:15,820 --> 00:01:18,200
to the other users. Because it's still not ready to be

27
00:01:18,200 --> 00:01:21,240
released, to be looked up. If you're using a centralized system,

28
00:01:21,240 --> 00:01:23,140
there's really no way you can do that, unless you make

29
00:01:23,140 --> 00:01:25,150
a local copy, which is something we said you don't want

30
00:01:25,150 --> 00:01:28,625
to do. With a distributor, with a decentralized VCS you can

31
00:01:28,625 --> 00:01:32,444
commit your local changes here, in your local repository, and you

32
00:01:32,444 --> 00:01:37,030
can push them to the central repository only when you're ready.

33
00:01:37,030 --> 00:01:40,870
Another big advantage, is that you can use multiple remote repository.

34
00:01:40,870 --> 00:01:43,210
In fact, centralized is not the right name for this

35
00:01:43,210 --> 00:01:45,980
one. This is just a remote repository, and I can have

36
00:01:45,980 --> 00:01:48,910
more than one. For example, Brad might want to push

37
00:01:48,910 --> 00:01:52,150
to another remote repository. As well. For instance, this could be

38
00:01:52,150 --> 00:01:55,940
a repository where the files are accessible for wider distribution.

39
00:01:55,940 --> 00:01:59,620
Imagine developing a software system in which a team is sharing

40
00:01:59,620 --> 00:02:02,930
internal versions, and then only some of these versions are actually

41
00:02:02,930 --> 00:02:06,080
pushed to the repository that is seeable to the whole world.