From b2d80610db6beda38573890ed169815e495bc663 Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Sun, 24 May 2020 16:34:31 +0700 Subject: [usth/ICT2.7] Engineer software --- .../1 - Lesson Overview - lang_en_vs5.srt | 43 + .../10 - Introduction to GIT - lang_en_vs6.srt | 79 ++ .../11 - Installing GIT - lang_en_vs5.srt | 63 ++ .../12 - GIT Workflow - lang_en_vs5.srt | 507 +++++++++ .../13 - GIT Demo: Intro to Git - lang_en_vs5.srt | 1095 ++++++++++++++++++++ .../14 - GIT Demo: Git + Eclipse - lang_en_vs5.srt | 307 ++++++ .../15 - GIT Demo: Github - lang_en_vs3.srt | 239 +++++ .../16 - GIT Recap - lang_en_vs5.srt | 35 + ...GIT Recap: Local Repositories - lang_en_vs5.srt | 163 +++ ...IT Recap: Remote Repositories - lang_en_vs3.srt | 59 ++ .../19 - GitHub Setup Assignment - lang_en_vs2.srt | 15 + .../19 - GitHub Setup Assignment - lang_pt_vs1.srt | 19 + ...- Interview with John Britton - lang_en_vs5.srt | 435 ++++++++ ...n Control System Introduction - lang_en_vs5.srt | 207 ++++ .../4 - VCS Quiz - lang_en_vs4.srt | 31 + .../5 - VCS Quiz Solution - lang_en_vs7.srt | 11 + .../6 - Essential Actions - lang_en_vs5.srt | 79 ++ .../7 - Example Workflow - lang_en_vs5.srt | 111 ++ .../8 - \"Don'ts\" in VCS - lang_en_vs5.srt" | 175 ++++ .../9 - Two Main Types of VCS - lang_en_vs5.srt | 163 +++ 20 files changed, 3836 insertions(+) create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/1 - Lesson Overview - lang_en_vs5.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/10 - Introduction to GIT - lang_en_vs6.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/11 - Installing GIT - lang_en_vs5.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/12 - GIT Workflow - lang_en_vs5.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/13 - GIT Demo: Intro to Git - lang_en_vs5.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/14 - GIT Demo: Git + Eclipse - lang_en_vs5.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/15 - GIT Demo: Github - lang_en_vs3.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/16 - GIT Recap - lang_en_vs5.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/17 - GIT Recap: Local Repositories - lang_en_vs5.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/18 - GIT Recap: Remote Repositories - lang_en_vs3.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_en_vs2.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_pt_vs1.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/2 - Interview with John Britton - lang_en_vs5.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/3 - Version Control System Introduction - lang_en_vs5.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/4 - VCS Quiz - lang_en_vs4.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/5 - VCS Quiz Solution - lang_en_vs7.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/6 - Essential Actions - lang_en_vs5.srt create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/7 - Example Workflow - lang_en_vs5.srt create mode 100644 "usth/ICT2.7/P1L4 Version Control Subtitles/8 - \"Don'ts\" in VCS - lang_en_vs5.srt" create mode 100644 usth/ICT2.7/P1L4 Version Control Subtitles/9 - Two Main Types of VCS - lang_en_vs5.srt (limited to 'usth/ICT2.7/P1L4 Version Control Subtitles') diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/1 - Lesson Overview - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/1 - Lesson Overview - lang_en_vs5.srt new file mode 100644 index 0000000..936e3db --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/1 - Lesson Overview - lang_en_vs5.srt @@ -0,0 +1,43 @@ +1 +00:00:00,440 --> 00:00:06,190 +Hi and welcome to the second lesson on tools of the trade. In the + +2 +00:00:06,190 --> 00:00:09,710 +previous lesson we talked about IDEs. Integrated + +3 +00:00:09,710 --> 00:00:13,300 +Development Environments and in particular we discussed + +4 +00:00:13,300 --> 00:00:16,460 +the eclipse ID. Today we're going to + +5 +00:00:16,460 --> 00:00:19,780 +talk about another fundamental type of tools + +6 +00:00:19,780 --> 00:00:22,840 +in the software engineering arena. Version control + +7 +00:00:22,840 --> 00:00:26,140 +systems. And these are also called, revision + +8 +00:00:26,140 --> 00:00:30,620 +or source control systems. In particular, we will focus on a + +9 +00:00:30,620 --> 00:00:36,320 +specific version control system called git. And as we did for eclipse, + +10 +00:00:36,320 --> 00:00:40,510 +we will first present git from a conceptual standpoint. And then + +11 +00:00:40,510 --> 00:00:44,200 +we will do a demo. To get some hands-on experience with GIT. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/10 - Introduction to GIT - lang_en_vs6.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/10 - Introduction to GIT - lang_en_vs6.srt new file mode 100644 index 0000000..201c7a5 --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/10 - Introduction to GIT - lang_en_vs6.srt @@ -0,0 +1,79 @@ +1 +00:00:00,240 --> 00:00:04,160 +One good representative of distributed version control systems, is + +2 +00:00:04,160 --> 00:00:08,320 +GIT. A distributed version control system that was initially designed + +3 +00:00:08,320 --> 00:00:11,297 +and developed by Linus Torvalds. I'm pretty sure you + +4 +00:00:11,297 --> 00:00:14,140 +know who Linus Torvalds is. He's basically this guy who + +5 +00:00:14,140 --> 00:00:17,070 +started and created the Linux operating system. And Linus + +6 +00:00:17,070 --> 00:00:20,140 +was unhappy with the existing version control systems, and wanted + +7 +00:00:20,140 --> 00:00:22,610 +a different one. He wanted to use it for maintaining + +8 +00:00:22,610 --> 00:00:25,330 +the Linux kernel. In particular, he wanted one with some + +9 +00:00:25,330 --> 00:00:28,550 +key characteristics. For example, the fact that it was distributed. He + +10 +00:00:28,550 --> 00:00:30,470 +wanted it to be fast. He wanted it to have a + +11 +00:00:30,470 --> 00:00:33,660 +simple design. And he wanted to have a strong support for + +12 +00:00:33,660 --> 00:00:37,370 +parallel branches, because many people were contributing to the kernel at the + +13 +00:00:37,370 --> 00:00:41,620 +same time. And therefore there many different branches of development. And + +14 +00:00:41,620 --> 00:00:45,120 +finally, he wanted for the virtual control system to be able to + +15 +00:00:45,120 --> 00:00:48,070 +handle large projects. As the Linux kernel is, and to do + +16 +00:00:48,070 --> 00:00:50,480 +it in an efficient way. So if you want to get an idea + +17 +00:00:50,480 --> 00:00:54,210 +of how popular GIT is today, there was a survey performed across the + +18 +00:00:54,210 --> 00:00:58,330 +Eclipse IDE users, and it showed that in 2013 GIT was used by + +19 +00:00:58,330 --> 00:01:02,950 +about 30% of the developers. So the, it had a 30% adoption rate. + +20 +00:01:02,950 --> 00:01:06,430 +So we will use a GIT as a version control system for the class. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/11 - Installing GIT - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/11 - Installing GIT - lang_en_vs5.srt new file mode 100644 index 0000000..38eedc0 --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/11 - Installing GIT - lang_en_vs5.srt @@ -0,0 +1,63 @@ +1 +00:00:00,120 --> 00:00:03,020 +As we did for Eclipse, and IDEs in general, we want + +2 +00:00:03,020 --> 00:00:05,133 +to start a GIT in a hands on way. So we're going + +3 +00:00:05,133 --> 00:00:08,425 +to start by seeing how to install GIT. And GIT is also + +4 +00:00:08,425 --> 00:00:12,440 +multiplatform, so you can install it no matter what operating system you + +5 +00:00:12,440 --> 00:00:15,980 +are using, unless of course you are using some arcane operating system. + +6 +00:00:15,980 --> 00:00:18,530 +But if you are using Linux, for instance, there should be a + +7 +00:00:18,530 --> 00:00:22,608 +package available that can install GIT for your specific distribution. If you're + +8 +00:00:22,608 --> 00:00:25,460 +using Mac OS, GIT is also available as part of XCode and + +9 +00:00:25,460 --> 00:00:29,270 +also as an independent package. Finally, if you're using Windows, GIT is + +10 +00:00:29,270 --> 00:00:33,090 +available as a package with an installer. In general, you can go + +11 +00:00:33,090 --> 00:00:37,290 +here to get information about how to get GIT, where to download + +12 +00:00:37,290 --> 00:00:39,975 +it, how to install it, and so on. So, now what I'd + +13 +00:00:39,975 --> 00:00:42,312 +like for you to do is to go, get GIT, install it, + +14 +00:00:42,312 --> 00:00:45,469 +in case you don't have it installed already on your machine. And + +15 +00:00:45,469 --> 00:00:48,253 +after that, you should be able to run GIT from the command + +16 +00:00:48,253 --> 00:00:51,120 +line. And, that's exactly what we're going to do through a demo. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/12 - GIT Workflow - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/12 - GIT Workflow - lang_en_vs5.srt new file mode 100644 index 0000000..84f0f2e --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/12 - GIT Workflow - lang_en_vs5.srt @@ -0,0 +1,507 @@ +1 +00:00:00,070 --> 00:00:02,100 +But before jumping into the demo I would like + +2 +00:00:02,100 --> 00:00:05,370 +to give a high level overview of the GIT workflow, + +3 +00:00:05,370 --> 00:00:08,420 +which will help you better, following the demo. So let + +4 +00:00:08,420 --> 00:00:12,480 +me start by representing four fundamental elements in the GIT + +5 +00:00:12,480 --> 00:00:15,640 +workflow which are these four: the workspace which is your + +6 +00:00:15,640 --> 00:00:19,980 +local directory. The index, also called the stage, and we'll + +7 +00:00:19,980 --> 00:00:22,470 +see in a minute what the index is. Then, we + +8 +00:00:22,470 --> 00:00:25,380 +have the local repository. We'll also refer to this as + +9 +00:00:25,380 --> 00:00:27,910 +HEAD in the, when we explain the different commands + +10 +00:00:27,910 --> 00:00:31,340 +and then, the word flow. And finally, the remote repository. + +11 +00:00:31,340 --> 00:00:34,600 +If you consider a file in your work space it + +12 +00:00:34,600 --> 00:00:37,860 +can be in three possible states. It can be committed + +13 +00:00:37,860 --> 00:00:40,170 +which means that the data, the latest changes to the + +14 +00:00:40,170 --> 00:00:45,030 +file are safely stored here. It could be modified, which + +15 +00:00:45,030 --> 00:00:47,840 +is the case of the file being changed and no, + +16 +00:00:47,840 --> 00:00:50,710 +none of these changes being saved to the local repository + +17 +00:00:50,710 --> 00:00:54,440 +so locally modified or it can be staged. And + +18 +00:00:54,440 --> 00:00:58,270 +stage means that the file is basically part of this + +19 +00:00:58,270 --> 00:01:01,620 +index. And what that means, that it's been tagged + +20 +00:01:01,620 --> 00:01:04,890 +to be considered in the next commit. And I know + +21 +00:01:04,890 --> 00:01:08,070 +that this is not all 100% intuitive, so let's + +22 +00:01:08,070 --> 00:01:10,860 +look at that again by considering the actual workflow and + +23 +00:01:10,860 --> 00:01:12,680 +let's see what happens when you issue the different + +24 +00:01:12,680 --> 00:01:16,060 +commands in git. So the first command that you normally + +25 +00:01:16,060 --> 00:01:18,520 +run in case you, you're getting access to a remote + +26 +00:01:18,520 --> 00:01:21,940 +repository, is the git clone command. And the git clone, + +27 +00:01:21,940 --> 00:01:24,880 +followed by the url for that repository, will create a + +28 +00:01:24,880 --> 00:01:28,580 +local copy of the repository in your workspace. And of + +29 +00:01:28,580 --> 00:01:30,310 +course, you don't have to do this step if you're + +30 +00:01:30,310 --> 00:01:34,380 +creating the repository yourself. The next command that we already + +31 +00:01:34,380 --> 00:01:38,170 +saw is the command add. And what the command add + +32 +00:01:38,170 --> 00:01:41,130 +does is to add a file that is in the + +33 +00:01:41,130 --> 00:01:44,630 +workspace to this index. And we say that after that, the + +34 +00:01:44,630 --> 00:01:48,700 +file is staged. So it's marked to be committed, but not + +35 +00:01:48,700 --> 00:01:53,350 +yet committed. And here I'm just mentioning this minus u option. + +36 +00:01:53,350 --> 00:01:56,330 +If you specify the minus u option, you will also consider deleted + +37 +00:01:56,330 --> 00:01:58,820 +files File, but let's not get there for now, we'll talk + +38 +00:01:58,820 --> 00:02:01,240 +about that when we do the demo. As I said, if you + +39 +00:02:01,240 --> 00:02:03,720 +add the file, it just gets added to this index but + +40 +00:02:03,720 --> 00:02:06,430 +is not actually committed, so what you need to do, is to + +41 +00:02:06,430 --> 00:02:10,389 +commit the file, so when you execute git commit, all the + +42 +00:02:10,389 --> 00:02:13,970 +files that are staged, that are released it here, their changes + +43 +00:02:13,970 --> 00:02:17,080 +will be committed to the local repository. So your files, as + +44 +00:02:17,080 --> 00:02:18,970 +I was saying, they can be in three states. They will + +45 +00:02:18,970 --> 00:02:21,820 +go from the modified state to the stage state when you + +46 +00:02:21,820 --> 00:02:24,200 +execute the app. And then from the stage state to the + +47 +00:02:24,200 --> 00:02:27,510 +committed state when you perform a GIT Commit. Okay, so at + +48 +00:02:27,510 --> 00:02:31,780 +this point your changes are safely stored in the local repository. + +49 +00:02:31,780 --> 00:02:34,370 +Notice that you can also perform these two steps at + +50 +00:02:34,370 --> 00:02:38,150 +once by executing a Commit -a. So if you have + +51 +00:02:38,150 --> 00:02:40,920 +a set of modified files, and all these files are + +52 +00:02:40,920 --> 00:02:44,550 +already part of the repository, so they're already known to diversion + +53 +00:02:44,550 --> 00:02:47,540 +control system, you can simply execute a commit -a. + +54 +00:02:47,540 --> 00:02:50,040 +And what the commit -a command will do, it + +55 +00:02:50,040 --> 00:02:53,080 +will stage your file and then commit them. All at + +56 +00:02:53,080 --> 00:02:56,650 +once. So it's a convenient shortcut. Of course, as I said, + +57 +00:02:56,650 --> 00:02:58,710 +this will not work if the file is a new file. + +58 +00:02:58,710 --> 00:03:00,730 +So if a file is a new file, you have to manually add + +59 +00:03:00,730 --> 00:03:04,620 +it. Otherwise commit -a will just stage and commit at once. + +60 +00:03:04,620 --> 00:03:07,400 +As we discussed when we looked at the diffence between centralized + +61 +00:03:07,400 --> 00:03:10,520 +and decentralized version console system. We saw that in the case + +62 +00:03:10,520 --> 00:03:13,930 +of the decentralized, there is a local repository which is this one. + +63 +00:03:13,930 --> 00:03:17,190 +And then you have to explicitly push your changes to a remote + +64 +00:03:17,190 --> 00:03:21,850 +repository, and this is exactly what the git push command does. It pushes + +65 +00:03:21,850 --> 00:03:25,930 +your changes that are in the local repository to the remote repository + +66 +00:03:25,930 --> 00:03:28,160 +so at this point all of your changes will be + +67 +00:03:28,160 --> 00:03:31,680 +visible to anyone who has access to the remote repository. + +68 +00:03:31,680 --> 00:03:33,710 +Now, let's see the opposite flow so how does it + +69 +00:03:33,710 --> 00:03:36,640 +work when you're actually getting files from the repository instead + +70 +00:03:36,640 --> 00:03:39,650 +of committing files to the repository. So the first command + +71 +00:03:39,650 --> 00:03:43,280 +I want to mention is the get fetch command and + +72 +00:03:43,280 --> 00:03:46,900 +what the get fetch command does is to get files from + +73 +00:03:46,900 --> 00:03:50,680 +the remote repositories to your local repository, but not yet to + +74 +00:03:50,680 --> 00:03:53,890 +your working directory. And we will see what is the usefullness of + +75 +00:03:53,890 --> 00:03:56,900 +doing this operation. Of having the files all in the local respository, + +76 +00:03:56,900 --> 00:03:59,380 +but not in your local directory. So, what that means, just to + +77 +00:03:59,380 --> 00:04:01,360 +make sure that we're on the same page. Is that you + +78 +00:04:01,360 --> 00:04:05,620 +will not see these files when you workspace. You will still have + +79 +00:04:05,620 --> 00:04:09,030 +your local files here. So this is sort of a physical distinction. + +80 +00:04:09,030 --> 00:04:12,060 +In order to get your data files from the local repositories to + +81 +00:04:12,060 --> 00:04:14,470 +your workspace you have to issue another command. Which is + +82 +00:04:14,470 --> 00:04:18,250 +the command git merge. Git merge will take the changes in + +83 +00:04:18,250 --> 00:04:21,870 +local repository and get them to your local workspace. So at + +84 +00:04:21,870 --> 00:04:25,460 +this point your files will be updated. To what is in + +85 +00:04:25,460 --> 00:04:27,730 +the remote reposity. Or at least what was in the + +86 +00:04:27,730 --> 00:04:30,810 +remote reposity at the time of the fetch. SImilarly to what + +87 +00:04:30,810 --> 00:04:34,340 +happened for the add and commit. There's a shortcut which is + +88 +00:04:34,340 --> 00:04:37,230 +the command git pull. So in case you want to get + +89 +00:04:37,230 --> 00:04:40,590 +the changes directly. To your work space with a single + +90 +00:04:40,590 --> 00:04:44,120 +command, you can issue a git pull command and what will + +91 +00:04:44,120 --> 00:04:46,560 +happen, is that the changes will get collected from the + +92 +00:04:46,560 --> 00:04:49,810 +remote repository and they will go to your local repository and + +93 +00:04:49,810 --> 00:04:51,990 +to your work space, at once. So this has the + +94 +00:04:51,990 --> 00:04:55,820 +same affect as performing a git fetch and a git merge. + +95 +00:04:55,820 --> 00:04:59,160 +So if we can do everything in one command, why, + +96 +00:04:59,160 --> 00:05:03,290 +why we want to fetch and berch as two separate operations? + +97 +00:05:03,290 --> 00:05:05,920 +So one of the reason is because this allows us + +98 +00:05:05,920 --> 00:05:09,410 +to compare files before we actually get the latest version + +99 +00:05:09,410 --> 00:05:12,600 +of the files. In particular, I can run the command + +100 +00:05:12,600 --> 00:05:17,310 +git diff head to get the difference between my local files, + +101 +00:05:17,310 --> 00:05:20,330 +the files in my working directory, and the files in + +102 +00:05:20,330 --> 00:05:22,800 +my local repository. So what I can do, I can + +103 +00:05:22,800 --> 00:05:25,550 +fetch the files from the remote repository, and once I + +104 +00:05:25,550 --> 00:05:29,260 +fetch these files. I can run a git diff head and + +105 +00:05:29,260 --> 00:05:32,620 +check what the differences are. And based on the differences decide + +106 +00:05:32,620 --> 00:05:35,554 +whether I want to merge or not. So while we are talking about + +107 +00:05:35,554 --> 00:05:37,890 +git diff, there is something else that you can use with the + +108 +00:05:37,890 --> 00:05:41,060 +diff command. So what you can do, you can run git diff + +109 +00:05:41,060 --> 00:05:44,930 +without further specifying head. In this case, what the command tell you + +110 +00:05:44,930 --> 00:05:48,310 +is the difference between the files that you have in your work + +111 +00:05:48,310 --> 00:05:51,780 +space and the ones that are staged for a commit. So basically, + +112 +00:05:51,780 --> 00:05:54,630 +what it will be telling you, is that what you could still + +113 +00:05:54,630 --> 00:05:58,300 +add to the stage for the further commit, and that you + +114 +00:05:58,300 --> 00:06:01,230 +haven't already. So what local changes will not make it to the + +115 +00:06:01,230 --> 00:06:04,440 +next commit, basically. And this you can use, for example, as + +116 +00:06:04,440 --> 00:06:07,450 +a sanity check before doing a commit to make sure all the + +117 +00:06:07,450 --> 00:06:09,980 +local changes that you have, and that you want to commit, + +118 +00:06:09,980 --> 00:06:13,230 +are actually staged and therefore will be considered. So now we will + +119 +00:06:13,230 --> 00:06:16,930 +cover all of the commands that we saw here. In our practical + +120 +00:06:16,930 --> 00:06:20,560 +demo. But please feel free to refer back to this Git Workflow + +121 +00:06:20,560 --> 00:06:23,570 +to get a kind of a high level vision. Or maybe you want to keep it next to + +122 +00:06:23,570 --> 00:06:26,110 +you, because this really gives you the overall structure + +123 +00:06:26,110 --> 00:06:28,450 +and the overall view of what happens when you + +124 +00:06:28,450 --> 00:06:31,160 +run the different commands. And it also helps you + +125 +00:06:31,160 --> 00:06:34,840 +visualize The different elements that are relevant when you're + +126 +00:06:34,840 --> 00:06:37,970 +using GIT. So the workspace, once more, the index + +127 +00:06:37,970 --> 00:06:40,790 +or stage, the local repository, and the remote repository. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/13 - GIT Demo: Intro to Git - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/13 - GIT Demo: Intro to Git - lang_en_vs5.srt new file mode 100644 index 0000000..d3b3a24 --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/13 - GIT Demo: Intro to Git - lang_en_vs5.srt @@ -0,0 +1,1095 @@ +1 +00:00:00,120 --> 00:00:02,170 +In this first part of the git demo, we will + +2 +00:00:02,170 --> 00:00:05,080 +call it the basics of git. So for example, how to + +3 +00:00:05,080 --> 00:00:08,280 +introduce yourself to git, how to create a repository, how to + +4 +00:00:08,280 --> 00:00:12,450 +commit changes and get changes from the repository, and so on. + +5 +00:00:12,450 --> 00:00:15,140 +So after you installed git you should have the git tool + +6 +00:00:15,140 --> 00:00:18,150 +available on the command line, so you can run the command + +7 +00:00:18,150 --> 00:00:21,110 +git and, if you just execute git you will get the + +8 +00:00:21,110 --> 00:00:25,930 +usage information for git, with the most commonly used git commands. + +9 +00:00:25,930 --> 00:00:28,940 +And to find information on any command, you can simply + +10 +00:00:28,940 --> 00:00:32,310 +type git help and the name of the command. For + +11 +00:00:32,310 --> 00:00:35,240 +example, lets try to write git help init. And that + +12 +00:00:35,240 --> 00:00:38,960 +brings up the git manual page for git init, which describes + +13 +00:00:38,960 --> 00:00:41,590 +the command, the synopsis, and so on. Now, lets get + +14 +00:00:41,590 --> 00:00:45,970 +started with using git by introducing ourselves to git, which is + +15 +00:00:45,970 --> 00:00:47,830 +the first thing we need to do. To do that + +16 +00:00:47,830 --> 00:00:51,310 +we use the git config command, in particular we are going to + +17 +00:00:51,310 --> 00:00:54,170 +write to the git config minus, minus global + +18 +00:00:54,170 --> 00:00:56,440 +user dot name. Which means we are telling it + +19 +00:00:56,440 --> 00:00:59,900 +our user name. We'll specify our user name which + +20 +00:00:59,900 --> 00:01:02,970 +in this case is George P. Burdell. You could + +21 +00:01:02,970 --> 00:01:04,970 +also provide your email address in the same + +22 +00:01:04,970 --> 00:01:09,370 +way. So you still use the git config --global + +23 +00:01:09,370 --> 00:01:12,750 +command. But in this case you will write user.email + +24 +00:01:12,750 --> 00:01:16,580 +as the property. And then you'll specify a suitable + +25 +00:01:16,580 --> 00:01:19,670 +email address. In this case, the email address of George P. + +26 +00:01:19,670 --> 00:01:23,780 +Burdell. We will now look at some commonly used commands that to + +27 +00:01:23,780 --> 00:01:27,210 +create and maintain a local repository. Let's first create a + +28 +00:01:27,210 --> 00:01:30,510 +new project and call it my project. So, to do that we + +29 +00:01:30,510 --> 00:01:32,790 +are simply going to create a directory and then we're going + +30 +00:01:32,790 --> 00:01:35,520 +to move into that directory. Now, if we try to call the + +31 +00:01:35,520 --> 00:01:39,000 +git status command at this point to see what's the state of + +32 +00:01:39,000 --> 00:01:41,990 +my project, of course git doesn't know anything about this project, right? + +33 +00:01:41,990 --> 00:01:44,360 +So, you will get an error. It will tell you that, basically, + +34 +00:01:44,360 --> 00:01:47,080 +we're not in a git repository. So how do we create a git + +35 +00:01:47,080 --> 00:01:50,090 +repository? How do we make this? A Git repository, but we do it + +36 +00:01:50,090 --> 00:01:53,560 +by calling git init and the output will tell you that the + +37 +00:01:53,560 --> 00:01:56,580 +repository was initialized. If we check the status again, you will see + +38 +00:01:56,580 --> 00:01:59,790 +that now Git recognizes the repository and will tell you that there is + +39 +00:01:59,790 --> 00:02:01,160 +nothing to commit because, of course, + +40 +00:02:01,160 --> 00:02:03,190 +the repository is completely empty. So let's + +41 +00:02:03,190 --> 00:02:07,380 +just create a new, empty file. Which we're going to call REAME. So + +42 +00:02:07,380 --> 00:02:10,008 +now if you run git status, as you can see, git will + +43 +00:02:10,008 --> 00:02:13,250 +tell you there is a file that's called README, but it's untracked. + +44 +00:02:13,250 --> 00:02:15,600 +Now what that means is that the file not staged, if you + +45 +00:02:15,600 --> 00:02:18,710 +remember our lesson. So what we need to do, we first need + +46 +00:02:18,710 --> 00:02:22,040 +to tell git that, you know, this needs to be considered. And + +47 +00:02:22,040 --> 00:02:25,690 +the way we do that, is by calling the git at command + +48 +00:02:25,690 --> 00:02:28,880 +and then we specify README as the argument for the command. If + +49 +00:02:28,880 --> 00:02:33,090 +we call again, Git status. Now, as you can see, Git knows + +50 +00:02:33,090 --> 00:02:35,780 +that there is a new file called README, because the file + +51 +00:02:35,780 --> 00:02:38,390 +is staged. So Git is aware of the fact that this + +52 +00:02:38,390 --> 00:02:41,490 +file has to be committed. So, to commit a file, + +53 +00:02:41,490 --> 00:02:45,410 +we simply execute git commit, which will open a text editor, which + +54 +00:02:45,410 --> 00:02:48,500 +can be different, depending on what is your environment, and here + +55 +00:02:48,500 --> 00:02:50,980 +we need to add a comment to be added to the commit. + +56 +00:02:50,980 --> 00:02:54,760 +So here we simply write in Added README file, then we + +57 +00:02:54,760 --> 00:02:58,170 +can close and save And this will add the file to the + +58 +00:02:58,170 --> 00:03:01,310 +Git repository. The local Git repository of course. At this + +59 +00:03:01,310 --> 00:03:04,220 +point, if we ran Git status again to see where we are. + +60 +00:03:04,220 --> 00:03:06,400 +You can see that Git tells you that there is nothing + +61 +00:03:06,400 --> 00:03:08,660 +to commit. Because of course the only file that we have, is + +62 +00:03:08,660 --> 00:03:13,070 +committed to the repository. Now, let's make some changes to our + +63 +00:03:13,070 --> 00:03:17,270 +README file. I'm just going to add some text here. Once more, we + +64 +00:03:17,270 --> 00:03:20,050 +can run git status, and at this point, git knows about + +65 +00:03:20,050 --> 00:03:23,430 +this file. So, it will know that README file has been modified. + +66 +00:03:23,430 --> 00:03:25,280 +Remember that before, it was telling you that it was a new + +67 +00:03:25,280 --> 00:03:28,310 +file, now it knows that there was a different version in the + +68 +00:03:28,310 --> 00:03:31,430 +repository. So something we can do, at this point, for example, is + +69 +00:03:31,430 --> 00:03:34,820 +to check the differences. Between this file and the committed one by + +70 +00:03:34,820 --> 00:03:38,040 +executing get diff readme and if you look at the output of + +71 +00:03:38,040 --> 00:03:42,320 +the get diff command here, you can see that this line, readme + +72 +00:03:42,320 --> 00:03:45,170 +file content was added and you'll see that it was added because + +73 +00:03:45,170 --> 00:03:48,610 +there's a plus sign before that line. In case of deletion of lines, + +74 +00:03:48,610 --> 00:03:51,460 +you'll see a minusm sign there. So at this point, if we + +75 +00:03:51,460 --> 00:03:54,950 +want to commit our file, remember that we'll always have to tell git + +76 +00:03:54,950 --> 00:03:58,070 +that we want to stage the file before committing it. Otherwise, it + +77 +00:03:58,070 --> 00:04:01,420 +will be ignored by the commit operation. So to tell git, that the + +78 +00:04:01,420 --> 00:04:04,140 +file has to be staged, we will, can use the usual git + +79 +00:04:04,140 --> 00:04:07,140 +add command. But if you remember the lesson, we can also use a + +80 +00:04:07,140 --> 00:04:10,150 +shortcut. So you, we don't really have to do this in two steps. + +81 +00:04:10,150 --> 00:04:13,730 +We can simply say, git commit -a, and this will tell git to + +82 +00:04:13,730 --> 00:04:17,120 +commit all of the files that git knows about, which in this + +83 +00:04:17,120 --> 00:04:19,959 +case is only the written file of course. Something else that we can + +84 +00:04:19,959 --> 00:04:22,950 +do, is that we can also provide the right away message for + +85 +00:04:22,950 --> 00:04:26,140 +the commit, without having to open an editor. So, to do that we + +86 +00:04:26,140 --> 00:04:29,760 +can specify the -n option. And at this point a we can + +87 +00:04:29,760 --> 00:04:34,050 +just put a in double quotes our content we press enter and as + +88 +00:04:34,050 --> 00:04:36,690 +you can see it will notify us that one file was changed + +89 +00:04:36,690 --> 00:04:38,850 +and in particular it will also tell you that there was an a + +90 +00:04:38,850 --> 00:04:41,470 +insertion again if we run git status you will see that + +91 +00:04:41,470 --> 00:04:44,800 +there is nothing else to commit. So now lets imagine that + +92 +00:04:44,800 --> 00:04:48,390 +you want to see the version history for your repository. You + +93 +00:04:48,390 --> 00:04:51,760 +can do that by running the git log command. So if + +94 +00:04:51,760 --> 00:04:54,560 +you run that, it will show you all the different commits + +95 +00:04:54,560 --> 00:04:57,990 +For your repository. And each commit has got a commit ID, as + +96 +00:04:57,990 --> 00:05:01,010 +you can see here and the one down here is + +97 +00:05:01,010 --> 00:05:04,740 +the first commit, where as the one above is the second commit. + +98 +00:05:04,740 --> 00:05:07,670 +And as you can see, we'll also show you the comments associated + +99 +00:05:07,670 --> 00:05:11,070 +with each commit. And in case you wanted to see the changes introduced + +100 +00:05:11,070 --> 00:05:14,500 +by a commit. You can use that git show command, and you + +101 +00:05:14,500 --> 00:05:18,220 +can provide the commit ID for the commit that you're interested in. + +102 +00:05:18,220 --> 00:05:20,600 +And you don't really need to provide the whole ID, you can + +103 +00:05:20,600 --> 00:05:23,600 +provide the first four or more characters. So that's what we're going to + +104 +00:05:23,600 --> 00:05:26,540 +do here. So we're going to specify the second commit, and when we + +105 +00:05:26,540 --> 00:05:31,120 +execute the command it will show use the changes introduced by that commit. + +106 +00:05:31,120 --> 00:05:33,550 +To fetch a repository from a remote server, you can + +107 +00:05:33,550 --> 00:05:36,350 +use the git clone command. So you will write git clone + +108 +00:05:36,350 --> 00:05:39,140 +and then specify the URL. For the remote repository. Here + +109 +00:05:39,140 --> 00:05:44,260 +we are using the SSH protocal and there are different protocals + +110 +00:05:44,260 --> 00:05:46,680 +that can be used, so the remote repository can be + +111 +00:05:46,680 --> 00:05:49,800 +made available in different ways. As you can see, when you + +112 +00:05:49,800 --> 00:05:54,050 +clone the project, the project is cloned into the local directory. + +113 +00:05:54,050 --> 00:05:57,180 +If you wanted to import the project under a different name. + +114 +00:05:57,180 --> 00:05:59,790 +You could just specify the name that you want for the + +115 +00:05:59,790 --> 00:06:03,110 +Local Directory. For example, in this case, myproject2. And, + +116 +00:06:03,110 --> 00:06:06,630 +so here you'll get the project in my local work space + +117 +00:06:06,630 --> 00:06:09,530 +with the name that I specified. So, let's go inside one + +118 +00:06:09,530 --> 00:06:12,020 +of these two projects that have the same content because they're + +119 +00:06:12,020 --> 00:06:14,930 +coming from the repository. If you want to see the details + +120 +00:06:14,930 --> 00:06:18,550 +of the server you can use the remote command and specify + +121 +00:06:18,550 --> 00:06:22,230 +the flag -v. And here we'll show you what is the remote + +122 +00:06:22,230 --> 00:06:25,560 +repository now let's go ahead to make some changes to the project + +123 +00:06:25,560 --> 00:06:28,820 +for example let's add a file. So I'm just going to create this + +124 +00:06:28,820 --> 00:06:31,230 +empty file which I am going to call new file I'm going to + +125 +00:06:31,230 --> 00:06:34,890 +add it to my index so that it gets committed. Later on and + +126 +00:06:34,890 --> 00:06:37,650 +then I'm going to run git commit to actually commit it to the + +127 +00:06:37,650 --> 00:06:41,570 +local repository. And I'm going to specify the comment for the commit right + +128 +00:06:41,570 --> 00:06:44,120 +away here from the command line. So when we do that the + +129 +00:06:44,120 --> 00:06:47,680 +file gets added to my local repository. And if we want to double + +130 +00:06:47,680 --> 00:06:50,690 +check that, we can run git log. And if you look at + +131 +00:06:50,690 --> 00:06:53,360 +the last commit at the top, you can see that it's telling + +132 +00:06:53,360 --> 00:06:56,980 +me that the new file was added to the repository, showing the + +133 +00:06:56,980 --> 00:06:59,940 +comment that I added. But this is just for the local repository, + +134 +00:06:59,940 --> 00:07:03,100 +so I need to use the git push command to push it + +135 +00:07:03,100 --> 00:07:06,250 +to the remote repository. And at this point, when I run that, + +136 +00:07:06,250 --> 00:07:09,890 +my local changes will be committed. To the remote repository. So now + +137 +00:07:09,890 --> 00:07:13,110 +let's go to the other copy of the project that we created. + +138 +00:07:13,110 --> 00:07:16,660 +The one under directory myproject2. If you remember this project was + +139 +00:07:16,660 --> 00:07:19,610 +linked up to the same remote project. But of course, if we run + +140 +00:07:19,610 --> 00:07:22,720 +get log here, we don't see this latest change that we made, because + +141 +00:07:22,720 --> 00:07:25,970 +we didn't synchronize this local copy with the remote copy. And so we + +142 +00:07:25,970 --> 00:07:28,530 +just have these files, the README and ,Five that worked there before. + +143 +00:07:28,530 --> 00:07:30,720 +So what we need to do is that we need to pull the + +144 +00:07:30,720 --> 00:07:34,180 +changes from the remote repository using git pull, and when we do that, + +145 +00:07:34,180 --> 00:07:38,130 +that will actually pull these changes and therefore, create the new files that + +146 +00:07:38,130 --> 00:07:41,340 +we created in the other directory. And if we run git log now, + +147 +00:07:41,340 --> 00:07:43,790 +you can see that now we have the new entry. The comment at + +148 +00:07:43,790 --> 00:07:46,920 +the top, that says this new file was added and of course, this + +149 +00:07:46,920 --> 00:07:49,880 +is just an example, so we had two copies of the project on the + +150 +00:07:49,880 --> 00:07:52,990 +same machine and for the same user, so the normal users scenario for + +151 +00:07:52,990 --> 00:07:56,230 +this, it will be that, each user will have their local copy, but this + +152 +00:07:56,230 --> 00:07:59,220 +should have given you the idea of how, git allows you to work + +153 +00:07:59,220 --> 00:08:03,210 +on some local file. Commit them and push them to a remote repository and + +154 +00:08:03,210 --> 00:08:06,680 +other users to get your changes, do further changes push + +155 +00:08:06,680 --> 00:08:08,860 +them as well and then, you know, they will allow you + +156 +00:08:08,860 --> 00:08:10,890 +to get their changes, and so on and so forth. So + +157 +00:08:10,890 --> 00:08:15,540 +really allows this collaboration between different users and keeping track + +158 +00:08:15,540 --> 00:08:18,730 +of all the changes made by the different users. So now + +159 +00:08:18,730 --> 00:08:21,860 +let's look at some more advanced concept, which are the concept + +160 +00:08:21,860 --> 00:08:25,600 +of branching, and merging. So what branching means is basically is + +161 +00:08:25,600 --> 00:08:28,540 +to make a copy, to create a branch of the current + +162 +00:08:28,540 --> 00:08:32,070 +project so that we can work on that copy indpendently from the + +163 +00:08:32,070 --> 00:08:34,740 +other copy, from the other branch. And then we can decide whether + +164 +00:08:34,740 --> 00:08:37,190 +we want to keep, both branches, or we want to merge them at + +165 +00:08:37,190 --> 00:08:40,510 +some point. And you can of course have multiple branches, not just two. + +166 +00:08:40,510 --> 00:08:43,558 +And the reason why this is particularly useful is because in many + +167 +00:08:43,558 --> 00:08:46,790 +cases if you think, about the way we develop software in general, + +168 +00:08:46,790 --> 00:08:50,030 +we work with artifacts. We might have the need to create kind + +169 +00:08:50,030 --> 00:08:53,910 +of a separate copy of your work space. To do some experiments for example. + +170 +00:08:53,910 --> 00:08:54,940 +So you want to change something in + +171 +00:08:54,940 --> 00:08:56,250 +the code, you're not really sure it's going to + +172 +00:08:56,250 --> 00:08:57,650 +work and you don't want to touch + +173 +00:08:57,650 --> 00:08:59,500 +your main copy. So that's the perfect application + +174 +00:08:59,500 --> 00:09:00,830 +for branching. If you want to do + +175 +00:09:00,830 --> 00:09:02,710 +something like that...you want to experiment or do + +176 +00:09:02,710 --> 00:09:04,800 +some modifications that you're not sure about, + +177 +00:09:04,800 --> 00:09:06,820 +you will branch your code, you will do + +178 +00:09:06,820 --> 00:09:08,230 +the changes...and then if you're happy with + +179 +00:09:08,230 --> 00:09:09,890 +the changes, you will merge that branch + +180 +00:09:09,890 --> 00:09:13,250 +with the original one, or worse if you're not happy with the changes you will + +181 +00:09:13,250 --> 00:09:16,680 +just throw away that branch. So this is just one possible use of branch but + +182 +00:09:16,680 --> 00:09:18,950 +it's one of the main uses of that. So in all let's see how that + +183 +00:09:18,950 --> 00:09:21,070 +can be done with git. So first of all if you + +184 +00:09:21,070 --> 00:09:24,740 +want to see which branches are currently present in your project, you can + +185 +00:09:24,740 --> 00:09:28,260 +simply execute git branch, and in this case, you can see + +186 +00:09:28,260 --> 00:09:31,090 +that there's only one branch, which is called master, and the star + +187 +00:09:31,090 --> 00:09:33,940 +there indicates that this is our current branch. So how do + +188 +00:09:33,940 --> 00:09:37,210 +we create a new branch? So we simply run the command + +189 +00:09:37,210 --> 00:09:41,010 +git branch and specify a name for the new branch, for example we'll + +190 +00:09:41,010 --> 00:09:44,110 +call it newBranch, to make it very explicit. At this point, + +191 +00:09:44,110 --> 00:09:46,940 +if we run git branch of course, we will have + +192 +00:09:46,940 --> 00:09:50,410 +a new branch plus master will still be our current branch. So + +193 +00:09:50,410 --> 00:09:52,780 +if you want to switch to the new branch, we will use + +194 +00:09:52,780 --> 00:09:56,510 +the git checkout command and specify the name of the branch that + +195 +00:09:56,510 --> 00:10:00,220 +we want to become our current branch. So when we run that, + +196 +00:10:00,220 --> 00:10:02,780 +git will tell us that we switched to the new branch. And + +197 +00:10:02,780 --> 00:10:05,920 +if we run git branch you will see that now the star + +198 +00:10:05,920 --> 00:10:09,130 +is next to newBranch because that's our current branch. There is a + +199 +00:10:09,130 --> 00:10:12,834 +shortcut for these two commands. If you run the command git + +200 +00:10:12,834 --> 00:10:17,240 +checkout specify the -b flag and then the name of + +201 +00:10:17,240 --> 00:10:19,790 +the new branch it will do both things at the same + +202 +00:10:19,790 --> 00:10:22,910 +time. It will create the new branch called testing in this + +203 +00:10:22,910 --> 00:10:25,760 +case, and then it will switch to new branch and then + +204 +00:10:25,760 --> 00:10:28,860 +it will tell you after executing the command. So now if + +205 +00:10:28,860 --> 00:10:31,290 +we look at the git branch output, you can see that + +206 +00:10:31,290 --> 00:10:35,090 +there is three branches and we are currently on the testing branch. + +207 +00:10:35,090 --> 00:10:37,300 +So now let's create a new file and just call it test + +208 +00:10:37,300 --> 00:10:41,180 +file, put some content in there, save it, we edit and commit it. + +209 +00:10:47,380 --> 00:10:50,280 +And as you can see, now in this current branch, we have our + +210 +00:10:50,280 --> 00:10:53,430 +testFile. So now let's switch to a different branch. So let's go back + +211 +00:10:53,430 --> 00:10:57,550 +to the master branch using the usual git checkout command. So now if + +212 +00:10:57,550 --> 00:11:00,310 +we do an ls, if we check the content of the current directory, + +213 +00:11:00,310 --> 00:11:03,140 +we can see that the testFile is not there, because of course, it's + +214 +00:11:03,140 --> 00:11:06,070 +not in this branch. so now let's assume that we are happy with + +215 +00:11:06,070 --> 00:11:09,260 +the testFile that we created, with the modification that we made on the + +216 +00:11:09,260 --> 00:11:13,080 +branch. And so we want to merge that branch with our master branch. + +217 +00:11:13,080 --> 00:11:16,180 +To do that we can call the git merge command and + +218 +00:11:16,180 --> 00:11:19,260 +we'll specify the branch that we want to merge with the current + +219 +00:11:19,260 --> 00:11:23,030 +one. So we will specify testing in this case. That will merge + +220 +00:11:23,030 --> 00:11:26,260 +the testing branch with the current branch, which is the master. Which + +221 +00:11:26,260 --> 00:11:29,200 +means that now the testfile is in my current working directory, + +222 +00:11:29,200 --> 00:11:32,180 +is in my current, Current branch. And if I run the branch, + +223 +00:11:32,180 --> 00:11:35,590 +you'll see that the testing branch is obviously still there, so let's + +224 +00:11:35,590 --> 00:11:38,370 +assume that we want to delete the testing branch at this point + +225 +00:11:38,370 --> 00:11:41,220 +because we don't need it anymore. We could simply execute + +226 +00:11:41,220 --> 00:11:44,940 +the branch -d which stands for -delete, specify + +227 +00:11:44,940 --> 00:11:47,670 +the name of the branch and this will eliminate that + +228 +00:11:47,670 --> 00:11:51,670 +branch as confirmed by running the command git branch or the + +229 +00:11:51,670 --> 00:11:55,030 +testing branch no longer shows up. So, something that might + +230 +00:11:55,030 --> 00:11:57,200 +happen when you merge a branch is, is that you + +231 +00:11:57,200 --> 00:12:00,000 +might have conflicts For example, in case you change the, + +232 +00:12:00,000 --> 00:12:03,600 +the same file into different branches. So, let's see an example + +233 +00:12:03,600 --> 00:12:06,730 +of that. So, we're going to check which branches we have, + +234 +00:12:06,730 --> 00:12:09,260 +so we have two branches, in this case, master and newBranch + +235 +00:12:09,260 --> 00:12:14,040 +Our current branch is master. Let's open this file called new + +236 +00:12:14,040 --> 00:12:19,310 +file and, add some content there. So now let's commit + +237 +00:12:19,310 --> 00:12:21,890 +this changes to the get to the local repository. Now + +238 +00:12:21,890 --> 00:12:24,600 +let's switch to the other branch and if you remember we + +239 +00:12:24,600 --> 00:12:26,900 +do this by running git checkout and the name of the + +240 +00:12:26,900 --> 00:12:29,150 +branch. And at this point we do the same operation here. + +241 +00:12:29,150 --> 00:12:32,090 +So we take this file and we change it here to. In this + +242 +00:12:32,090 --> 00:12:34,740 +case we have content that reflects the fact that we are. In the + +243 +00:12:34,740 --> 00:12:38,790 +new branch just for convenience. At this point, we also can move the + +244 +00:12:38,790 --> 00:12:41,870 +file here. The comment here is, of course, that this is the new + +245 +00:12:41,870 --> 00:12:44,800 +file in the new branch. So, at this point, what we have here + +246 +00:12:44,800 --> 00:12:47,980 +is that we have this file called newfile that has been modified + +247 +00:12:47,980 --> 00:12:51,320 +independently both in the master branch and in the new branch. So we + +248 +00:12:51,320 --> 00:12:55,090 +have a conflict. Right? So, now, let's switch back to the master branch. + +249 +00:12:55,090 --> 00:12:57,720 +So now, let's say we want to merge the two branches. So + +250 +00:12:57,720 --> 00:13:00,490 +since we are in master, we want to say that when I + +251 +00:13:00,490 --> 00:13:03,970 +merge the new branch into the current one. And when we run + +252 +00:13:03,970 --> 00:13:07,540 +that, we get an auto merging conflict. So at this point what + +253 +00:13:07,540 --> 00:13:10,390 +we can do, is that we can manually fix the conflict by + +254 +00:13:10,390 --> 00:13:13,910 +opening the new file. So the file that was showing the conflict. + +255 +00:13:13,910 --> 00:13:16,860 +So here you can see the kind of of information that you get + +256 +00:13:16,860 --> 00:13:20,340 +in the conflicted file. So it's telling you basically that there is + +257 +00:13:20,340 --> 00:13:23,760 +in the head which is the, the master this conflict. Which is new + +258 +00:13:23,760 --> 00:13:26,830 +file in master. Which is the content that we added of course. And + +259 +00:13:26,830 --> 00:13:30,190 +then you know, under, you know, the separator you can see the content + +260 +00:13:30,190 --> 00:13:32,650 +that was added in the new branch. Which is the contents in new + +261 +00:13:32,650 --> 00:13:35,990 +file, in new branch. So basically, what this is showing you is the + +262 +00:13:35,990 --> 00:13:39,150 +parts of the file that are conflicting. In this case, we only have + +263 +00:13:39,150 --> 00:13:41,990 +one line, is basically the whole file into two versions and you can + +264 +00:13:41,990 --> 00:13:45,460 +decide which version you want to keep or how you want to merge in + +265 +00:13:45,460 --> 00:13:48,260 +general, the two pieces. So here, let's assume that we + +266 +00:13:48,260 --> 00:13:52,140 +want to keep the content from the master. So what we're + +267 +00:13:52,140 --> 00:13:54,510 +going to do is we're going to elimate the annotations + +268 +00:13:54,510 --> 00:13:57,500 +and we're going to eliminate the additional content. We save this + +269 +00:13:57,500 --> 00:13:59,680 +file. So at this point what we need to do + +270 +00:13:59,680 --> 00:14:04,040 +is simply to commit the modified file (the merge file) and we + +271 +00:14:04,040 --> 00:14:07,440 +do that in the normal way. We call git add, specifying + +272 +00:14:07,440 --> 00:14:11,180 +the file, so git add newfile. Then we run git commit + +273 +00:14:11,180 --> 00:14:15,630 +newfile, and we specify in the comment for clarity that this is the merged file, + +274 +00:14:15,630 --> 00:14:19,530 +so that we performed a merge. And at this point we are done with our merge. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/14 - GIT Demo: Git + Eclipse - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/14 - GIT Demo: Git + Eclipse - lang_en_vs5.srt new file mode 100644 index 0000000..b95877b --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/14 - GIT Demo: Git + Eclipse - lang_en_vs5.srt @@ -0,0 +1,307 @@ +1 +00:00:00,140 --> 00:00:02,580 +Now that we saw some of the git basic + +2 +00:00:02,580 --> 00:00:05,689 +functionalities in practice, let's go a step further. If + +3 +00:00:05,689 --> 00:00:08,420 +you remember I mentioned before that many of these + +4 +00:00:08,420 --> 00:00:12,250 +version control systems are actually integrated into IDE's. So + +5 +00:00:12,250 --> 00:00:14,540 +what were going to look at next is what happens + +6 +00:00:14,540 --> 00:00:17,500 +if we put together git and eclipse. And the + +7 +00:00:17,500 --> 00:00:20,960 +result is egit, or EGit is a plug in + +8 +00:00:20,960 --> 00:00:25,520 +for the eclipse IDE that adds git functionality to eclipse. + +9 +00:00:25,520 --> 00:00:27,880 +So let's see how that works in practice. So + +10 +00:00:27,880 --> 00:00:31,400 +support for git is available in many IDE's including + +11 +00:00:31,400 --> 00:00:33,920 +Eclipse. And if you want to get github + +12 +00:00:33,920 --> 00:00:38,620 +for Eclipse, you should go to eclipse.github.com and you can + +13 +00:00:38,620 --> 00:00:41,445 +download the plugin. So this bring us to the + +14 +00:00:41,445 --> 00:00:44,530 +plugin page and you can use the provided URL + +15 +00:00:44,530 --> 00:00:47,060 +and directions to install the plugin. In this case + +16 +00:00:47,060 --> 00:00:49,945 +we're going to copy this address. So we're going to + +17 +00:00:49,945 --> 00:00:54,110 +Eclipse, Help, Install new software. We can click on Add + +18 +00:00:54,110 --> 00:00:56,810 +to add a new site from which to get software. We + +19 +00:00:56,810 --> 00:00:59,110 +paste the location that we just copied here. And we + +20 +00:00:59,110 --> 00:01:02,842 +can give it a descriptive name. In this case I'll just + +21 +00:01:02,842 --> 00:01:06,645 +call it Eclipse Git plugin. Then when I click okay, + +22 +00:01:06,645 --> 00:01:09,720 +Eclipse will go, and look for plugins. And as you can + +23 +00:01:09,720 --> 00:01:12,510 +see, there are two options. We can select both of them, + +24 +00:01:12,510 --> 00:01:15,180 +and click on next. You can see that the Eclipse identified + +25 +00:01:15,180 --> 00:01:18,330 +a few dependencies. You can click next and accept them. You can + +26 +00:01:18,330 --> 00:01:21,540 +accept the terms and conditions for the plug in, and then just + +27 +00:01:21,540 --> 00:01:25,730 +finish. And at this point, Eclipse will install the plugin, which might + +28 +00:01:25,730 --> 00:01:28,610 +take a little bit of time. So we're just going to speed it up. + +29 +00:01:28,610 --> 00:01:31,110 +And when Eclipse is done, you will get this prompt that will + +30 +00:01:31,110 --> 00:01:33,670 +tell you that you need to restart Eclipse for the plugin to + +31 +00:01:33,670 --> 00:01:36,990 +be actually installed. And at this point, you want to click yes. And + +32 +00:01:36,990 --> 00:01:40,550 +when Eclipse restarts. You'll have your plugin. We're going to go to the git + +33 +00:01:40,550 --> 00:01:44,030 +repository perspective that we can select here. And when we click + +34 +00:01:44,030 --> 00:01:47,160 +OK, you can see that our display will change. And since + +35 +00:01:47,160 --> 00:01:49,360 +we don't have any repository yet, we are provided with the + +36 +00:01:49,360 --> 00:01:53,620 +possibility of adding an existing local git repository, cloning a git repository + +37 +00:01:53,620 --> 00:01:56,330 +or creating a new local git repository. We're going to add an + +38 +00:01:56,330 --> 00:01:59,800 +existing local repository. This is the one that we created earlier, + +39 +00:01:59,800 --> 00:02:02,170 +so we'll select it and click finish, and you can see + +40 +00:02:02,170 --> 00:02:05,660 +that my project is now added to this set of git repositories. + +41 +00:02:05,660 --> 00:02:09,240 +Now let's check out the project from the repository by selecting import + +42 +00:02:09,240 --> 00:02:12,530 +project. And here you can import something as an existing project, you + +43 +00:02:12,530 --> 00:02:15,300 +can use a new project wizard, and in this case I chose + +44 +00:02:15,300 --> 00:02:18,680 +the option of importing as a general project. Then I click Next and + +45 +00:02:18,680 --> 00:02:20,870 +as you can see, I have the project name up there and + +46 +00:02:20,870 --> 00:02:24,630 +I can click Finish. So now, if I go to the resource perspective + +47 +00:02:24,630 --> 00:02:27,740 +by clicking here, I can see that the project has been added + +48 +00:02:27,740 --> 00:02:30,760 +to my set of projects. And I can see all the files within + +49 +00:02:30,760 --> 00:02:33,440 +the project, particularly, if I click on the README, you can see + +50 +00:02:33,440 --> 00:02:36,190 +that we have the Readme file that we created before. Same thing for + +51 +00:02:36,190 --> 00:02:38,930 +the test file. One thing I can do at this point, it + +52 +00:02:38,930 --> 00:02:41,070 +to execute different git commands, perform + +53 +00:02:41,070 --> 00:02:43,430 +different git operations by using the team + +54 +00:02:43,430 --> 00:02:47,010 +submenu in the contactual menu. And here there are several things + +55 +00:02:47,010 --> 00:02:50,650 +I can do including some advanced commands. And just to give it a + +56 +00:02:50,650 --> 00:02:53,200 +shot, I am going to try to click show local history, and this + +57 +00:02:53,200 --> 00:02:56,180 +shows the history of the file. For example it shows the author and + +58 +00:02:56,180 --> 00:02:59,200 +it shows when he was created, when he was authored. Lets make + +59 +00:02:59,200 --> 00:03:02,810 +some changes to this file by adding some new content. Okay. I saved + +60 +00:03:02,810 --> 00:03:05,160 +the file and now I can see that error that indicates that my + +61 +00:03:05,160 --> 00:03:08,620 +file was locally changed. So now if I go to the team menu, + +62 +00:03:08,620 --> 00:03:11,380 +you can see that I have the option to add to the index, + +63 +00:03:11,380 --> 00:03:14,686 +to stage the file. And now I got this new label that star + +64 +00:03:14,686 --> 00:03:17,980 +that shows the files added to the index. And now at this point, + +65 +00:03:17,980 --> 00:03:21,270 +I can go to the team menu again and I can actually commit + +66 +00:03:21,270 --> 00:03:25,480 +the file by selecting the corresponding entry. This allows me to enter + +67 +00:03:25,480 --> 00:03:28,390 +the commit message, exactly in the same way which I could do + +68 +00:03:28,390 --> 00:03:31,250 +that from the command line with the textual editor. And after I + +69 +00:03:31,250 --> 00:03:34,050 +put the comment there, I can actually commit. And now if we + +70 +00:03:34,050 --> 00:03:36,320 +look at the history view, we can see here that we have + +71 +00:03:36,320 --> 00:03:38,960 +a new version for the file that we just modified. And we + +72 +00:03:38,960 --> 00:03:42,250 +can also see the commit comment. And, at this point, if we + +73 +00:03:42,250 --> 00:03:46,450 +had remote repository we could push our changes to that remote repository + +74 +00:03:46,450 --> 00:03:49,330 +as well. Again, using the team submenu and + +75 +00:03:49,330 --> 00:03:52,170 +the contextual menu. And, speaking of remote repositories, what we + +76 +00:03:52,170 --> 00:03:55,230 +are going to see next is how to use GitHub + +77 +00:03:55,230 --> 00:03:58,640 +repositories which are remote repositories that are hosted on GitHub. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/15 - GIT Demo: Github - lang_en_vs3.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/15 - GIT Demo: Github - lang_en_vs3.srt new file mode 100644 index 0000000..5e842d7 --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/15 - GIT Demo: Github - lang_en_vs3.srt @@ -0,0 +1,239 @@ +1 +00:00:00,120 --> 00:00:02,820 +In the interview that we did at the beginning of the class, + +2 +00:00:02,820 --> 00:00:08,430 +we talked with John about GitHub, where GitHub is a Git hosting website, and + +3 +00:00:08,430 --> 00:00:11,390 +John told you all about it. For this class, we will be + +4 +00:00:11,390 --> 00:00:16,350 +using GitHub as our Git hosting. Let's see how GitHub works in practice and + +5 +00:00:16,350 --> 00:00:19,450 +let's see some of the common features offered by GitHub. + +6 +00:00:19,450 --> 00:00:24,010 +This is what we'll do in the third part of this Git demo. What I'm showing here + +7 +00:00:24,010 --> 00:00:28,550 +is the GitHub website and as I said, GitHub is a Git hosting website and + +8 +00:00:28,550 --> 00:00:32,950 +you can create an account on GitHub by simply signing up on the website. And + +9 +00:00:32,950 --> 00:00:36,100 +because we already have an account that we're simply going to sign in + +10 +00:00:36,100 --> 00:00:40,570 +to see what kind of functionality GitHub offers. And we're going to specify our + +11 +00:00:40,570 --> 00:00:44,190 +username and password. And as you can see on the GitHub website, + +12 +00:00:44,190 --> 00:00:47,695 +you can use this menu up on the right to create a new repository or + +13 +00:00:47,695 --> 00:00:51,500 +change the account settings. Let's click on our user profile. And + +14 +00:00:51,500 --> 00:00:54,270 +here we can see some statistics for our user. For + +15 +00:00:54,270 --> 00:00:59,190 +example, we can see statistic about our contributions and our repositories. So + +16 +00:00:59,190 --> 00:01:02,560 +now if we go to the Repositories view, we can create a new repository. + +17 +00:01:02,560 --> 00:01:07,117 +We give it a name. Let's call it myrepo. We can provide the description for + +18 +00:01:07,117 --> 00:01:11,680 +the repository. If we want, we can initialize the repository by adding a README + +19 +00:01:11,680 --> 00:01:15,860 +file. And even though we are not doing it right now, if you can see up here, + +20 +00:01:15,860 --> 00:01:19,820 +you can also add a license here on the right and it allows you + +21 +00:01:19,820 --> 00:01:24,831 +to choose from a set of predefined licenses. And you can also a .gitignore file, + +22 +00:01:24,831 --> 00:01:28,410 +which, in case you don't know what that is, it's a very convenient file that + +23 +00:01:28,410 --> 00:01:32,740 +will automatically exclude from the repositories file that should not be added. + +24 +00:01:32,740 --> 00:01:35,690 +So if you remember in the lesson we said there are things that you should not + +25 +00:01:35,690 --> 00:01:39,263 +add to the repositories. For example, derived files. So + +26 +00:01:39,263 --> 00:01:42,360 +here, using this menu, you can pick the type of project that you have. + +27 +00:01:42,360 --> 00:01:47,740 +For example, Java project or PHP project or many other kinds of projects. And + +28 +00:01:47,740 --> 00:01:50,510 +the GitHub will automatically add that file for you. + +29 +00:01:50,510 --> 00:01:53,680 +But let's skip that for now and simply create our repository. And + +30 +00:01:53,680 --> 00:01:58,000 +that creates a repository that contains the README file because that's what we + +31 +00:01:58,000 --> 00:02:02,580 +decided to do. And it also allows you to edit the README file by clicking on it. + +32 +00:02:02,580 --> 00:02:05,560 +It will bring up an editor and here you can write, you know, + +33 +00:02:05,560 --> 00:02:08,949 +for example, initial readme for your project. Then you can add your + +34 +00:02:08,949 --> 00:02:13,070 +commit message up there and then you can commit the changes to your README file. + +35 +00:02:13,070 --> 00:02:18,212 +The site also provides many other features, like, for example, creating issues, + +36 +00:02:18,212 --> 00:02:22,030 +pull requests, adding and editing a wiki, and also, you know, + +37 +00:02:22,030 --> 00:02:25,740 +defining other characteristics and settings for the repository. Now, if we go to + +38 +00:02:25,740 --> 00:02:30,500 +the repository, you can see that we also get the HTTPS link for the repository. + +39 +00:02:30,500 --> 00:02:35,870 +So this is the URL that you can use to clone your repository. If you remember, + +40 +00:02:35,870 --> 00:02:39,250 +with a git clone command, that's the URL that you can specify. So + +41 +00:02:39,250 --> 00:02:43,480 +let's try to do that and clone that repository. So we're going to copy this URL. + +42 +00:02:43,480 --> 00:02:48,300 +To do that, we're going to execute git clone and specify the URL that we + +43 +00:02:48,300 --> 00:02:52,310 +just copied. And you can see that the project was created, was cloned locally. + +44 +00:02:52,310 --> 00:02:55,760 +And if we go under myrepo, which is the name of the repository, you can see that + +45 +00:02:55,760 --> 00:02:59,570 +the README file that we created on GitHub is here. So if we create a new file, + +46 +00:02:59,570 --> 00:03:03,340 +which we're going to call again, newFile just to be clear. And then we + +47 +00:03:03,340 --> 00:03:07,920 +can add it, commit it, specifying as usual a commit message. So at this point, + +48 +00:03:07,920 --> 00:03:11,940 +we can push our locked out changes to the remote GitHub repository. And + +49 +00:03:11,940 --> 00:03:14,340 +because the GitHub repository is password protected, + +50 +00:03:14,340 --> 00:03:17,660 +we have to specify our login and password. And of course, if you + +51 +00:03:17,660 --> 00:03:21,770 +pass the wrong password, GitHub is not going to let you in. So let's try again. + +52 +00:03:21,770 --> 00:03:25,110 +Let's try to get the password right this time. I'm going to specify again, + +53 +00:03:25,110 --> 00:03:31,130 +my login and my password. At this point, the push is successful and + +54 +00:03:31,130 --> 00:03:35,220 +my changes are actually pushed to the master, which is the GitHub repository. + +55 +00:03:35,220 --> 00:03:39,020 +To double check that, let's go back to the GitHub repository and as you can see, + +56 +00:03:39,020 --> 00:03:42,470 +that the file that we added, newFile, is there as expected. And of course, + +57 +00:03:42,470 --> 00:03:45,880 +there's many more things that you can do on the GitHub website, so + +58 +00:03:45,880 --> 00:03:48,410 +I strongly encourage you to go and try out things. But + +59 +00:03:48,410 --> 00:03:51,980 +the key message here is that the GitHub is a Git hosting website where you + +60 +00:03:51,980 --> 00:03:54,990 +can get an account and create your remote repositories. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/16 - GIT Recap - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/16 - GIT Recap - lang_en_vs5.srt new file mode 100644 index 0000000..b35fc59 --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/16 - GIT Recap - lang_en_vs5.srt @@ -0,0 +1,35 @@ +1 +00:00:00,110 --> 00:00:02,212 +Now that we are done with our demo, I just want + +2 +00:00:02,212 --> 00:00:05,910 +to go through a quick GIT recap to remind you of the + +3 +00:00:05,910 --> 00:00:08,720 +main commands that we saw, and what they do. And you can + +4 +00:00:08,720 --> 00:00:11,290 +also use these as sort of a reference when you work with + +5 +00:00:11,290 --> 00:00:13,940 +GIT. And by the way, if you look around and you do + +6 +00:00:13,940 --> 00:00:16,960 +a search, you can see that there's tons of examples on the + +7 +00:00:16,960 --> 00:00:22,170 +web of GitHub tutorials, videos, examples, manuals. So feel free to + +8 +00:00:22,170 --> 00:00:25,910 +explore. And I'm actually going to put some references to tutorials and + +9 +00:00:25,910 --> 00:00:29,100 +videos that I found particularly useful in the notes for the class. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/17 - GIT Recap: Local Repositories - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/17 - GIT Recap: Local Repositories - lang_en_vs5.srt new file mode 100644 index 0000000..c29fae8 --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/17 - GIT Recap: Local Repositories - lang_en_vs5.srt @@ -0,0 +1,163 @@ +1 +00:00:00,100 --> 00:00:02,460 +So, let me start by recapping some of the operations that + +2 +00:00:02,460 --> 00:00:06,000 +we can perform on local repositories. I'm just going to list them + +3 +00:00:06,000 --> 00:00:09,240 +here and go through them by separating them into three main + +4 +00:00:09,240 --> 00:00:12,930 +categories. The first one is commands that, to create a repository and + +5 +00:00:12,930 --> 00:00:15,470 +notice that not all of these are git commands, that for + +6 +00:00:15,470 --> 00:00:18,710 +example, to create the repository, we would normally want to. Create a + +7 +00:00:18,710 --> 00:00:21,560 +directory, which is exactly what we did in our demo. We want + +8 +00:00:21,560 --> 00:00:25,310 +to go to that directory and then execute the git init statement, + +9 +00:00:25,310 --> 00:00:29,110 +which initializes that directory as a git repository. The second + +10 +00:00:29,110 --> 00:00:32,530 +category includes commands that we'll use to modify the content of + +11 +00:00:32,530 --> 00:00:35,280 +the repository. We saw that we can use git add + +12 +00:00:35,280 --> 00:00:39,190 +to add a specific file or a complete directory to our + +13 +00:00:39,190 --> 00:00:41,650 +index. So to the list of files that will be + +14 +00:00:41,650 --> 00:00:44,510 +committed, that will be considered in the next commit. Then we + +15 +00:00:44,510 --> 00:00:47,620 +can use commit to actually commit the changes that we + +16 +00:00:47,620 --> 00:00:50,374 +made to those files to our local repository, and we can + +17 +00:00:50,374 --> 00:00:54,030 +also use git move and git rm or git remove + +18 +00:00:54,030 --> 00:00:57,420 +to move files around and to remove files. Finally, the + +19 +00:00:57,420 --> 00:01:00,270 +third category is the category of commands that we can + +20 +00:01:00,270 --> 00:01:04,950 +use to inspect the concrete repository. And this set includes git + +21 +00:01:04,950 --> 00:01:06,960 +log, that we can use to see the log of + +22 +00:01:06,960 --> 00:01:09,970 +the repository, git status, that can give us important information + +23 +00:01:09,970 --> 00:01:12,810 +about the status of the file center repository. Git diff, + +24 +00:01:12,810 --> 00:01:15,500 +that we can use to see the differences between for example, + +25 +00:01:15,500 --> 00:01:19,160 +our local files. And the remote files. And finally git + +26 +00:01:19,160 --> 00:01:23,270 +show, that will show us information about our last commit. What + +27 +00:01:23,270 --> 00:01:25,940 +we committed, what were the changes and so on. And again, + +28 +00:01:25,940 --> 00:01:29,290 +we saw most or all of these commands in our demo. + +29 +00:01:29,290 --> 00:01:31,920 +So let me also remind you of a possible workflow. Which + +30 +00:01:31,920 --> 00:01:34,350 +again, we already saw but it's always good to go through + +31 +00:01:34,350 --> 00:01:37,670 +it once more. And remember that this is just an example. + +32 +00:01:37,670 --> 00:01:40,520 +It's just a possible workflow. You can do many different things, + +33 +00:01:40,520 --> 00:01:43,210 +you can have many different workflows with git. This is just + +34 +00:01:43,210 --> 00:01:45,980 +up to illustrate some of the things that you can do. So, + +35 +00:01:45,980 --> 00:01:49,430 +you might do some local editing. Execute git status to see what + +36 +00:01:49,430 --> 00:01:53,020 +files you changed. Then you might run a git diff on the + +37 +00:01:53,020 --> 00:01:56,230 +files to see what are these changes. And then you can run + +38 +00:01:56,230 --> 00:01:59,460 +git commit -a to commit your changes. And in case you + +39 +00:01:59,460 --> 00:02:02,520 +want to specify the commit message right away without having to go + +40 +00:02:02,520 --> 00:02:06,040 +through an editor, you can also add the -m parameter and + +41 +00:02:06,040 --> 00:02:08,110 +specify the message here on the same line. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/18 - GIT Recap: Remote Repositories - lang_en_vs3.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/18 - GIT Recap: Remote Repositories - lang_en_vs3.srt new file mode 100644 index 0000000..9afccc9 --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/18 - GIT Recap: Remote Repositories - lang_en_vs3.srt @@ -0,0 +1,59 @@ +1 +00:00:00,110 --> 00:00:02,960 +SImilarly, let's go through some commands that you can run on + +2 +00:00:02,960 --> 00:00:07,150 +remote repositories. First command is the command to copy a repository, + +3 +00:00:07,150 --> 00:00:10,840 +which is git clone in which you get a remote repository and you make a lot of + +4 +00:00:10,840 --> 00:00:14,850 +copy in your working directory. The repository can be specified as a URL. + +5 +00:00:14,850 --> 00:00:18,230 +It can be a local file, it can be specified using the HTTP or + +6 +00:00:18,230 --> 00:00:21,070 +the SSH protocol, and there's also other ways to do it. + +7 +00:00:21,070 --> 00:00:25,300 +This creates a complete local copy of the repository, as it says, and links it + +8 +00:00:25,300 --> 00:00:29,030 +to the remote repository, which is what is called the origin. And if you want, + +9 +00:00:29,030 --> 00:00:33,400 +you could also actually link to the repository, later. Then the normal way of + +10 +00:00:33,400 --> 00:00:37,800 +receiving changes from a repository is to perform a git pull command. And we saw + +11 +00:00:37,800 --> 00:00:42,345 +that you can also perform the same operation through two commands, get fetch and + +12 +00:00:42,345 --> 00:00:47,210 +git merge. In case you want to inspect the changes before actually merging them, + +13 +00:00:47,210 --> 00:00:49,550 +before actually getting them in your local copy. And + +14 +00:00:49,550 --> 00:00:52,940 +if you want to send changes that you have in your local repository to + +15 +00:00:52,940 --> 00:00:55,680 +a remote repository, you will use the git push command. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_en_vs2.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_en_vs2.srt new file mode 100644 index 0000000..9dec29b --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_en_vs2.srt @@ -0,0 +1,15 @@ +1 +00:00:00,160 --> 00:00:03,095 +This is ultimately pretty simple. All you need to do is visit + +2 +00:00:03,095 --> 00:00:08,720 +github.com/join and set up a free GitHub account. If you already have a GitHub, + +3 +00:00:08,720 --> 00:00:11,870 +account you can sign in using your existing account. If you want to + +4 +00:00:11,870 --> 00:00:14,550 +use a separate identity for the class, feel free to set up a second one. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_pt_vs1.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_pt_vs1.srt new file mode 100644 index 0000000..6dc6f48 --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_pt_vs1.srt @@ -0,0 +1,19 @@ +1 +00:00:00,160 --> 00:00:03,095 +Na verdade é muito simples. +Só tens que ir a + +2 +00:00:03,095 --> 00:00:08,720 +github.com/join e criar uma conta grátis +no GitHub. Se já tiveres uma conta GitHub, + +3 +00:00:08,720 --> 00:00:11,870 +podes entrar com a tua conta. +Se quiseres + +4 +00:00:11,870 --> 00:00:14,550 +criar uma diferente para o curso, +podes criar uma segunda sem problemas. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/2 - Interview with John Britton - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/2 - Interview with John Britton - lang_en_vs5.srt new file mode 100644 index 0000000..999833f --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/2 - Interview with John Britton - lang_en_vs5.srt @@ -0,0 +1,435 @@ +1 +00:00:00,170 --> 00:00:02,630 +>> And I thought that the best way to break the ice on version + +2 +00:00:02,630 --> 00:00:04,970 +control systems and Git and some other + +3 +00:00:04,970 --> 00:00:07,939 +related concepts was to interview John Britton who + +4 +00:00:07,939 --> 00:00:11,840 +works with GitHub. So let's go and see what John has to say about + +5 +00:00:11,840 --> 00:00:14,120 +Git, about version control systems in general, + +6 +00:00:14,120 --> 00:00:17,809 +and about GitHub. John is in Tapei, if I'm not wrong. + +7 +00:00:17,809 --> 00:00:18,610 +>> That's correct. + +8 +00:00:18,610 --> 00:00:20,320 +>> Okay so we're, you know we couldn't + +9 +00:00:20,320 --> 00:00:22,570 +go there so we're interviewing him remotely. And I + +10 +00:00:22,570 --> 00:00:25,490 +want, I just want to thank you so much and John for agreeing to talk to us. + +11 +00:00:25,490 --> 00:00:27,940 +>> Thank you very much for having me it was my pleasure. + +12 +00:00:27,940 --> 00:00:30,560 +>> And, I'm just going to ask, a few + +13 +00:00:30,560 --> 00:00:32,938 +general questions because John is an expert on, + +14 +00:00:32,938 --> 00:00:36,270 +Git and GitHub. John is a developer and + +15 +00:00:36,270 --> 00:00:38,550 +a community builder is active in both the + +16 +00:00:38,550 --> 00:00:42,200 +open source and the open education areas. And + +17 +00:00:42,200 --> 00:00:44,860 +as an educational liaison we have, is working + +18 +00:00:44,860 --> 00:00:47,580 +to improve Computer Science education by bringing the + +19 +00:00:47,580 --> 00:00:51,460 +principles of open source into the classroom. And + +20 +00:00:51,460 --> 00:00:53,160 +I'm going to start with an general question, + +21 +00:00:53,160 --> 00:00:55,320 +which is what is a version control system? + +22 +00:00:55,320 --> 00:00:57,960 +>> So, a version control system is + +23 +00:00:57,960 --> 00:01:00,360 +a tool that software developers use. Anybody + +24 +00:01:00,360 --> 00:01:02,560 +who's doing you know, working with digital + +25 +00:01:02,560 --> 00:01:06,540 +assets, digital projects can also use for + +26 +00:01:06,540 --> 00:01:11,320 +keeping track of, you know, revisions of your project, and when I say revisions, I + +27 +00:01:11,320 --> 00:01:16,850 +mean essentially snapshots of your project over time. So you can imagine doing + +28 +00:01:16,850 --> 00:01:19,720 +some work and then every so often, be it, every couple of + +29 +00:01:19,720 --> 00:01:23,799 +hours, every couple of days, saving a permanent snapshot of your project. + +30 +00:01:24,880 --> 00:01:26,650 +>> Why is this useful? I understand that + +31 +00:01:26,650 --> 00:01:28,720 +it is nice to take a snapshot of your + +32 +00:01:28,720 --> 00:01:30,070 +project, but what did you do with the + +33 +00:01:30,070 --> 00:01:33,420 +snapshot afterwards? I think the most immediately obvious benefit + +34 +00:01:33,420 --> 00:01:36,340 +to having snapshots of your project to keeping + +35 +00:01:36,340 --> 00:01:38,280 +revisions is that you can go back. If you + +36 +00:01:38,280 --> 00:01:40,190 +have ever worked on a project and got to + +37 +00:01:40,190 --> 00:01:41,940 +a point where you solved a bunch of your + +38 +00:01:41,940 --> 00:01:45,330 +problems, and there is just one more step to do. And + +39 +00:01:45,330 --> 00:01:47,640 +you start working on trying to solve that last step, and + +40 +00:01:47,640 --> 00:01:51,350 +you break things, you make it worse then it was an + +41 +00:01:51,350 --> 00:01:54,420 +hour ago. At that point its easier to just go back + +42 +00:01:54,420 --> 00:01:56,780 +to what you had then trying to figure out what you + +43 +00:01:56,780 --> 00:01:59,320 +broke. So you can always go back in time, and the + +44 +00:01:59,320 --> 00:02:02,660 +other big one is being able to collaborate with multiple people, + +45 +00:02:02,660 --> 00:02:07,450 +so its pretty seldom these days that you. Work on a production + +46 +00:02:07,450 --> 00:02:09,860 +totally on your own. It's most common to work in, you + +47 +00:02:09,860 --> 00:02:12,993 +know, in teams and small groups. And so, using a revision + +48 +00:02:12,993 --> 00:02:16,340 +control system allows you to collaborate with other people. And make + +49 +00:02:16,340 --> 00:02:19,060 +sure that you don't step on each other's toes as you're working. + +50 +00:02:19,060 --> 00:02:21,310 +>> Alright, that's great, because those are exactly some of the + +51 +00:02:21,310 --> 00:02:25,250 +topics that we're going to cover in the lesson. And so since we're + +52 +00:02:25,250 --> 00:02:28,470 +going to talk about the specifics of version control system which is + +53 +00:02:28,470 --> 00:02:32,660 +Git and you're definitely an expert in, in Git. So what would + +54 +00:02:32,660 --> 00:02:36,510 +you say is specifically special about Git? What characterizes it + +55 +00:02:36,510 --> 00:02:39,940 +and how does it compare to other version control systems. + +56 +00:02:39,940 --> 00:02:43,140 +>> So if any of you have used version control systems before, you + +57 +00:02:43,140 --> 00:02:47,850 +may have heard of something like subversion, CVS, or maybe a commercial solution + +58 +00:02:47,850 --> 00:02:53,550 +like ProForce. I think the main important characteristics of Git are first that + +59 +00:02:53,550 --> 00:02:56,050 +it's open source. And the second, + +60 +00:02:56,050 --> 00:02:59,030 +that it's a distributed version control system. + +61 +00:02:59,030 --> 00:03:00,430 +So what that means, the distributed version + +62 +00:03:00,430 --> 00:03:04,260 +control system is essentially a system for tracking + +63 +00:03:04,260 --> 00:03:07,700 +revisions of your software that doesn't have any + +64 +00:03:07,700 --> 00:03:11,730 +central repository. So the biggest characteristic is that + +65 +00:03:11,730 --> 00:03:14,520 +I can do my work and you can also work on the same project at + +66 +00:03:14,520 --> 00:03:16,900 +the same time without communicating with each other + +67 +00:03:16,900 --> 00:03:19,650 +and without communicating to a central system. + +68 +00:03:19,650 --> 00:03:24,190 +>> Okay, great. And so now that we saw what Git is, what is + +69 +00:03:24,190 --> 00:03:26,050 +GitHub and how does it fit into + +70 +00:03:26,050 --> 00:03:29,320 +this picture of the distributed, revision control system? + +71 +00:03:29,320 --> 00:03:34,800 +>> So GitHub is, the world's largest code host, and we essentially have a + +72 +00:03:34,800 --> 00:03:36,940 +website where you can collaborate with people + +73 +00:03:36,940 --> 00:03:39,950 +when you're writing code. There's two ways you + +74 +00:03:39,950 --> 00:03:43,650 +can use GitHub. You can use it publicly for open source and you can use + +75 +00:03:43,650 --> 00:03:49,660 +it in private within your team, or your company, or within your class. And, Git + +76 +00:03:49,660 --> 00:03:53,960 +Hub started out just as a way to host your Git repositories. But it's + +77 +00:03:53,960 --> 00:03:56,000 +actually grown into quite a bit more. It's + +78 +00:03:56,000 --> 00:03:59,820 +an entire collaboration system around your code. + +79 +00:03:59,820 --> 00:04:00,580 +>> How many users do you have? + +80 +00:04:00,580 --> 00:04:03,620 +>> I would say that we're approaching five million. + +81 +00:04:03,620 --> 00:04:05,570 +I don't know the exact number. We're definitely more + +82 +00:04:05,570 --> 00:04:08,080 +than four million right now. But yeah, I'd say + +83 +00:04:08,080 --> 00:04:10,330 +somewhere, somewhere close to between four and five million. + +84 +00:04:10,330 --> 00:04:14,750 +>> So that's a lot space I'd guess. Terabytes of disk + +85 +00:04:14,750 --> 00:04:15,840 +space, I would imagine. + +86 +00:04:15,840 --> 00:04:19,170 +>> There are a lot of GIT repositories on, on our servers. + +87 +00:04:19,170 --> 00:04:21,180 +>> Something else you want to say? I + +88 +00:04:21,180 --> 00:04:23,920 +guess that the when taking about GitHub there's one + +89 +00:04:23,920 --> 00:04:26,110 +thing that you kind of can't leave out and + +90 +00:04:26,110 --> 00:04:28,670 +that's that's a feature that's called a pull request. + +91 +00:04:28,670 --> 00:04:31,090 +So when you're using GitHub, you can share + +92 +00:04:31,090 --> 00:04:34,940 +your Git repository, do some work, and actually do + +93 +00:04:34,940 --> 00:04:37,880 +do a code review. Of proposed changes which + +94 +00:04:37,880 --> 00:04:39,770 +is what we call a pull request on github.com. + +95 +00:04:39,770 --> 00:04:42,790 +Essentially what it lets you do is have a discussion + +96 +00:04:42,790 --> 00:04:46,320 +about a set of proposed changes and leave feedback in + +97 +00:04:46,320 --> 00:04:48,870 +line with the code. You could say for example, this + +98 +00:04:48,870 --> 00:04:51,670 +method needs to be re-factored or I think I found if + +99 +00:04:51,670 --> 00:04:54,830 +off by one error here, just different kinds of feedback + +100 +00:04:54,830 --> 00:04:59,120 +so that before you totally integrate some proposed changes. You have, + +101 +00:04:59,120 --> 00:05:01,180 +kind of a conversation about what your code. And I + +102 +00:05:01,180 --> 00:05:03,050 +think that's really valuable when you are working in a team. + +103 +00:05:03,050 --> 00:05:05,510 +>> Thank you, John, that was very informative and + +104 +00:05:05,510 --> 00:05:07,440 +thanks again for taking the time to talk to us. + +105 +00:05:07,440 --> 00:05:10,160 +>> No problem, thanks for having me. I'll talk to you soon. + +106 +00:05:10,160 --> 00:05:13,990 +>> Let's thank again John for enlightening us + +107 +00:05:13,990 --> 00:05:17,350 +on some aspects of version control systems, Git and + +108 +00:05:17,350 --> 00:05:19,410 +GitHub. And now, let's go over some of the + +109 +00:05:19,410 --> 00:05:21,650 +topics that we discussed with John to recap them. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/3 - Version Control System Introduction - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/3 - Version Control System Introduction - lang_en_vs5.srt new file mode 100644 index 0000000..be0515b --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/3 - Version Control System Introduction - lang_en_vs5.srt @@ -0,0 +1,207 @@ +1 +00:00:00,160 --> 00:00:02,080 +So first of all, what is a version + +2 +00:00:02,080 --> 00:00:05,550 +control system? A version control system or VCS, + +3 +00:00:05,550 --> 00:00:07,670 +is a system that allows you to manage + +4 +00:00:07,670 --> 00:00:11,180 +multiple revisions of the same unit of information. For + +5 +00:00:11,180 --> 00:00:14,330 +example of documents, of source files or any + +6 +00:00:14,330 --> 00:00:17,380 +other item of that sort. And as the graphical + +7 +00:00:17,380 --> 00:00:21,240 +depiction shows, a VCS allows a multiple actors. + +8 +00:00:21,240 --> 00:00:25,020 +Here we have four, to cooperate and share files. + +9 +00:00:25,020 --> 00:00:26,980 +Now, let's drill into this concept in a little + +10 +00:00:26,980 --> 00:00:29,720 +more detail. And let's do that by discussing why + +11 +00:00:29,720 --> 00:00:32,870 +is VCS useful, especially in the context of software + +12 +00:00:32,870 --> 00:00:35,790 +engineering and of software development. So first of all, + +13 +00:00:35,790 --> 00:00:39,570 +using a version control system enforces discipline, because it + +14 +00:00:39,570 --> 00:00:43,030 +manages the process by which the control of items + +15 +00:00:43,030 --> 00:00:46,720 +passes from one person to another. Another important aspect + +16 +00:00:46,720 --> 00:00:51,170 +of VCS is that it allows you for archiving versions. + +17 +00:00:51,170 --> 00:00:54,330 +So you can store subsequent versions of source controlled + +18 +00:00:54,330 --> 00:00:57,450 +items into a VCS. And not only you can + +19 +00:00:57,450 --> 00:01:00,450 +store versions, you can also maintain a lot of + +20 +00:01:00,450 --> 00:01:03,480 +interesting and important historical information + +21 +00:01:03,480 --> 00:01:05,810 +about these versions. For example, + +22 +00:01:05,810 --> 00:01:08,070 +a VCL will store information such as, who is + +23 +00:01:08,070 --> 00:01:11,270 +the author for this specific version stored in the system. + +24 +00:01:11,270 --> 00:01:13,820 +Or, for another example, on what day and what + +25 +00:01:13,820 --> 00:01:16,260 +time that version was stored. And a lot of other + +26 +00:01:16,260 --> 00:01:19,240 +interesting information about the specific version of the + +27 +00:01:19,240 --> 00:01:21,600 +item. Information that you can then retrieve and for + +28 +00:01:21,600 --> 00:01:25,040 +example, use to compare versions. Obviously, the fact of + +29 +00:01:25,040 --> 00:01:27,970 +having a central repository in which all these items + +30 +00:01:27,970 --> 00:01:31,350 +are stored enables collaboration, so people can more easily + +31 +00:01:31,350 --> 00:01:35,510 +share data, share files, share documents through the use + +32 +00:01:35,510 --> 00:01:37,950 +of VCS. And I'm sure that you all had + +33 +00:01:37,950 --> 00:01:41,320 +the experience of deleting a file by mistake or + +34 +00:01:41,320 --> 00:01:43,860 +modifying a file in the wrong way, or in the + +35 +00:01:43,860 --> 00:01:47,830 +most common case of changing something in your code for instance. + +36 +00:01:47,830 --> 00:01:50,490 +And breaking something and not being able to go back + +37 +00:01:50,490 --> 00:01:53,630 +to a version that was working. Not remembering, for example, what + +38 +00:01:53,630 --> 00:01:56,130 +is that you changed that broke the code. In all + +39 +00:01:56,130 --> 00:01:59,850 +these cases a version control system can be extremely useful because + +40 +00:01:59,850 --> 00:02:03,330 +it will allow you to recover from this accidental deletions + +41 +00:02:03,330 --> 00:02:06,690 +or edits. And for example, to go back of yesterdays version + +42 +00:02:06,690 --> 00:02:09,949 +that was working perfectly, and also to compare, for example, yesterdays + +43 +00:02:09,949 --> 00:02:12,920 +version with today version and see what is that you changed. + +44 +00:02:12,920 --> 00:02:16,000 +Finally, a version control system will normally also allow you to + +45 +00:02:16,000 --> 00:02:20,460 +conserve and save disk space on both the source control client + +46 +00:02:20,460 --> 00:02:23,880 +and on the server. Why? Well, for instance because it's centralizing + +47 +00:02:23,880 --> 00:02:26,570 +the management of the version. So instead of having many copies + +48 +00:02:26,570 --> 00:02:29,480 +spread around, you'll have only one central point where these copies + +49 +00:02:29,480 --> 00:02:32,240 +are stored or a few points where these copies are stored. + +50 +00:02:32,240 --> 00:02:34,330 +In addition, version control system often + +51 +00:02:34,330 --> 00:02:37,470 +uses efficient algorithms to store these changes. + +52 +00:02:37,470 --> 00:02:41,310 +And therefore, you can keep many versions without taking up too much space. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/4 - VCS Quiz - lang_en_vs4.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/4 - VCS Quiz - lang_en_vs4.srt new file mode 100644 index 0000000..26d9c55 --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/4 - VCS Quiz - lang_en_vs4.srt @@ -0,0 +1,31 @@ +1 +00:00:00,100 --> 00:00:02,430 +Now before we continue, and we look at more details + +2 +00:00:02,430 --> 00:00:04,400 +of version control systems, I want to ask you a + +3 +00:00:04,400 --> 00:00:07,230 +quick question about VCS. I want to know whether you + +4 +00:00:07,230 --> 00:00:10,190 +have used a version control system before, and if so, + +5 +00:00:10,190 --> 00:00:12,090 +which one or which ones. I'm going to list in + +6 +00:00:12,090 --> 00:00:15,260 +here some of the most commonly used version control systems, + +7 +00:00:15,260 --> 00:00:18,840 +like CVS, Subversion, GIT, and I'm also allowing you to + +8 +00:00:18,840 --> 00:00:22,640 +specify other VCS in case you have used different ones. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/5 - VCS Quiz Solution - lang_en_vs7.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/5 - VCS Quiz Solution - lang_en_vs7.srt new file mode 100644 index 0000000..1a380a5 --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/5 - VCS Quiz Solution - lang_en_vs7.srt @@ -0,0 +1,11 @@ +1 +00:00:00,130 --> 00:00:03,030 +And of course there's no right answer for this. I just wanted to collect some + +2 +00:00:03,030 --> 00:00:05,020 +statistics. To see what kind of previous + +3 +00:00:05,020 --> 00:00:07,100 +experience you have with this kind of systems. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/6 - Essential Actions - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/6 - Essential Actions - lang_en_vs5.srt new file mode 100644 index 0000000..5159d9b --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/6 - Essential Actions - lang_en_vs5.srt @@ -0,0 +1,79 @@ +1 +00:00:00,140 --> 00:00:02,220 +What I want to do next, is to look at how + +2 +00:00:02,220 --> 00:00:05,780 +version control systems actually work. We saw what they are. We + +3 +00:00:05,780 --> 00:00:08,130 +saw why they are useful. But how do they actually work? + +4 +00:00:08,130 --> 00:00:11,460 +And we're going to do that by starting from some essential + +5 +00:00:11,460 --> 00:00:15,400 +actions that version control systems perform. The first one is the + +6 +00:00:15,400 --> 00:00:18,920 +addition of files. So, when you use a version control system, + +7 +00:00:18,920 --> 00:00:22,280 +you can add a file to the repository. And at that + +8 +00:00:22,280 --> 00:00:25,400 +point the file will be accessible to other people who have access + +9 +00:00:25,400 --> 00:00:28,640 +to the repository. And now the fundamental action is commit. + +10 +00:00:28,640 --> 00:00:31,230 +When you change a file, a file that is already in + +11 +00:00:31,230 --> 00:00:33,610 +the repository, when you make some local changes to a + +12 +00:00:33,610 --> 00:00:36,430 +file that is already in the repository, you want then to + +13 +00:00:36,430 --> 00:00:39,460 +commit your changes to the central repository, so they can + +14 +00:00:39,460 --> 00:00:43,990 +become visible to all of the other users on the repository. Finally, + +15 +00:00:43,990 --> 00:00:47,770 +another fundamental action is the action of updating a file. If + +16 +00:00:47,770 --> 00:00:50,650 +we have a repository and someone else can modify the files + +17 +00:00:50,650 --> 00:00:52,800 +in the repository, I want to be able to get + +18 +00:00:52,800 --> 00:00:55,550 +the changes that other people made to the files in the + +19 +00:00:55,550 --> 00:00:58,980 +repository. And these are just three of the basic actions, but + +20 +00:00:58,980 --> 00:01:01,870 +there are many, many more. And we'll see several of those. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/7 - Example Workflow - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/7 - Example Workflow - lang_en_vs5.srt new file mode 100644 index 0000000..c2f58df --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/7 - Example Workflow - lang_en_vs5.srt @@ -0,0 +1,111 @@ +1 +00:00:00,160 --> 00:00:02,830 +Before looking at additional actions, though, I would like to + +2 +00:00:02,830 --> 00:00:06,770 +see what is the basic workflow in a version control system + +3 +00:00:06,770 --> 00:00:09,370 +using the three actions that we just saw. And to + +4 +00:00:09,370 --> 00:00:11,760 +do that I'm going to use two of our friends, Brad + +5 +00:00:11,760 --> 00:00:14,590 +and Janet. So we have Janet here, Brad, and a + +6 +00:00:14,590 --> 00:00:18,440 +VCS that they are using. Now imagine that Janet creates a + +7 +00:00:18,440 --> 00:00:23,020 +file called foo.txt and puts some information in the file. + +8 +00:00:23,020 --> 00:00:25,250 +At that point she might want to add the file to + +9 +00:00:25,250 --> 00:00:28,340 +the repository and to commit it so that her changes + +10 +00:00:28,340 --> 00:00:31,210 +and the file get to the central repository. And when she + +11 +00:00:31,210 --> 00:00:33,900 +adds and commit, that's exactly what will happen, in foo + +12 +00:00:33,900 --> 00:00:36,870 +will be come available here, and will be accessible to the + +13 +00:00:36,870 --> 00:00:40,330 +other users. In this case it'll be accessible to Brad. + +14 +00:00:40,330 --> 00:00:44,190 +If Brett were to run an update command, what will happen + +15 +00:00:44,190 --> 00:00:47,800 +is that the file foo.txt will be copied on the local + +16 +00:00:47,800 --> 00:00:50,460 +work space of Brad and Brad will be able to access + +17 +00:00:50,460 --> 00:00:52,980 +the file. At this point Brad might want to modify + +18 +00:00:52,980 --> 00:00:57,110 +the file, for example add something to this existing file. + +19 +00:00:57,110 --> 00:00:59,410 +After doing that, he also may want to share the + +20 +00:00:59,410 --> 00:01:02,900 +updated file with Janet. To do that, he will commit the + +21 +00:01:02,900 --> 00:01:06,070 +file and the result will be exactly the same of + +22 +00:01:06,070 --> 00:01:09,470 +when Janet committed her file. That the updated file will + +23 +00:01:09,470 --> 00:01:11,890 +be sent to the repository and the repository will store + +24 +00:01:11,890 --> 00:01:15,570 +that information and make it available for other users. So now, + +25 +00:01:15,570 --> 00:01:18,290 +if Janet performs an update, she will get the + +26 +00:01:18,290 --> 00:01:21,860 +new version of foo.txt with the additional information that was + +27 +00:01:21,860 --> 00:01:24,950 +added by Brad. And we will see all of this + +28 +00:01:24,950 --> 00:01:27,350 +in action in our next demo in a few minutes. diff --git "a/usth/ICT2.7/P1L4 Version Control Subtitles/8 - \"Don'ts\" in VCS - lang_en_vs5.srt" "b/usth/ICT2.7/P1L4 Version Control Subtitles/8 - \"Don'ts\" in VCS - lang_en_vs5.srt" new file mode 100644 index 0000000..f5d27fb --- /dev/null +++ "b/usth/ICT2.7/P1L4 Version Control Subtitles/8 - \"Don'ts\" in VCS - lang_en_vs5.srt" @@ -0,0 +1,175 @@ +1 +00:00:00,100 --> 00:00:02,020 +Before getting to the demo, I want to say a few + +2 +00:00:02,020 --> 00:00:06,550 +more things. In particular, I discuss the main don'ts in VCS. So, + +3 +00:00:06,550 --> 00:00:09,110 +what are some things that you don't want to do, and + +4 +00:00:09,110 --> 00:00:12,687 +you should not do, when you're using a version control system? And + +5 +00:00:12,687 --> 00:00:15,382 +I'm going to mention two, in particular, because these are two + +6 +00:00:15,382 --> 00:00:18,028 +that I witnessed several times when I was teaching this class and + +7 +00:00:18,028 --> 00:00:21,820 +also when collaborating with other people. So, there are two kinds + +8 +00:00:21,820 --> 00:00:25,460 +of resources that you don't want to add to a VCS normally. + +9 +00:00:25,460 --> 00:00:29,070 +One is derived files. For example an executable that is + +10 +00:00:29,070 --> 00:00:31,930 +derived by compiling a set of source files, where the + +11 +00:00:31,930 --> 00:00:34,480 +source files all already in the repository. At that point, + +12 +00:00:34,480 --> 00:00:37,680 +there is no reason to also add the executable file in + +13 +00:00:37,680 --> 00:00:41,150 +the repository. So in general, any executable file should not + +14 +00:00:41,150 --> 00:00:44,570 +be added to repository. The second class of files that I + +15 +00:00:44,570 --> 00:00:47,760 +want to mention is these bulky binary files. If you + +16 +00:00:47,760 --> 00:00:50,600 +have one such file, it is normally not a good idea + +17 +00:00:50,600 --> 00:00:53,430 +to store them under a version control system, to store them + +18 +00:00:53,430 --> 00:00:56,670 +in the repository. There might be exceptions to these rules, but in + +19 +00:00:56,670 --> 00:00:59,070 +general, these are the kind of files that you want to + +20 +00:00:59,070 --> 00:01:02,540 +keep local, and you don't want to put in the VCS repository. + +21 +00:01:02,540 --> 00:01:06,500 +Another typical mistake, and that happens all the time, especially to + +22 +00:01:06,500 --> 00:01:10,650 +novice users of VCS. Is that you get your file from VCS + +23 +00:01:10,650 --> 00:01:13,120 +and so you get your local copy of the file that + +24 +00:01:13,120 --> 00:01:16,270 +was in the VCS, and you want to make some changes, and + +25 +00:01:16,270 --> 00:01:20,090 +before making the changes you decided, no, no let me actually save + +26 +00:01:20,090 --> 00:01:22,410 +a local copy of the file, and I'm going to work on + +27 +00:01:22,410 --> 00:01:24,950 +that one. Or let me save it before I modify it, or + +28 +00:01:24,950 --> 00:01:28,350 +let take a snap shot of a whole tree of files. Just because + +29 +00:01:28,350 --> 00:01:30,830 +I don't really trust the fact that VCS is going to be + +30 +00:01:30,830 --> 00:01:33,170 +able to help and is going to be able to recover from possible + +31 +00:01:33,170 --> 00:01:36,980 +mistakes. Never ever do that. I have seen that done many times, + +32 +00:01:36,980 --> 00:01:41,570 +and it always leads to disasters. First of all it is useless, and + +33 +00:01:41,570 --> 00:01:44,000 +second it's risky. Because then what happens is that at + +34 +00:01:44,000 --> 00:01:46,610 +the time in which you have to turn in your assignment, + +35 +00:01:46,610 --> 00:01:48,330 +in the case you are doing an assignment, but even in + +36 +00:01:48,330 --> 00:01:50,740 +more serious situation, when you have to turn in your code, + +37 +00:01:50,740 --> 00:01:54,620 +for example to your colleagues. You always end up being confused + +38 +00:01:54,620 --> 00:01:59,010 +about which is the version that you're really using. So absolutely + +39 +00:01:59,010 --> 00:02:03,262 +no local copies. No local redundancy when you're using a version + +40 +00:02:03,262 --> 00:02:06,798 +control system. Trust the version control system, and trust the version + +41 +00:02:06,798 --> 00:02:09,280 +control system to be able to manage your versions. You + +42 +00:02:09,280 --> 00:02:13,350 +can always save it, commit it, retrieve previous versions, and you'll + +43 +00:02:13,350 --> 00:02:15,530 +be able to do everything that you can do by copying + +44 +00:02:15,530 --> 00:02:19,240 +the file yourself, and even more. So again, try the VCS. diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/9 - Two Main Types of VCS - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/9 - Two Main Types of VCS - lang_en_vs5.srt new file mode 100644 index 0000000..3c6eba4 --- /dev/null +++ b/usth/ICT2.7/P1L4 Version Control Subtitles/9 - Two Main Types of VCS - lang_en_vs5.srt @@ -0,0 +1,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. -- cgit 1.4.1