One great thing about working with text files is that their simplicity makes it easy to track changes between various versions of a file. Since the files contain only ASCII characters, it is easy to create programs that can look for character or word level changes to a document.
Why use a VCS (Version Control System)?
Version control allows a developer/writer to make changes to a file and track their changes over time. By ‘committing’ changes to a file with a simple, associated message, the developer can create a list of how they have changed the file over time.
Version control also allows for a developer/writer to make changes that may or may not work. If they find that the change they made was inappropriate, or did not work, they can simply go back to a previous version. There is no need for directories full of “save as” files.
Version control makes collaboration and sharing easier. Then all associated parties can see all changes made by each other, and manage any conflicts that may occur within a file.
“Yes, but why are we using a VCS?”
I want you to use the principles of GIT so that you can track incremental changes to your work throughout your weekly assignments.
This will allow you to see your own change history.
This will allow you to try things, and know that if they do not work well, you can easily go back to what you had working before.
Your git repositories (or repos) can easily be integrated with GitHub.com (discussed in the next section), which has some definite benefits:
Built in distributed cloud backup for free.
A free hosted webspace. (This is how you will submit assignments during most of the course).
This allows us to easily see your work/code and track the changes you made during the weekly development cycle.
The last reason you will be using GIT and GitHub.com is because they are standard industry tools in both commercial and research facilities. Your familiarity and comfort with GIT will make you a better future collaborator.
GitHub Repository Hosting
GitHub.com is a web-based Git repository hosting service, and you should have registered for a GitHub account by now. But you may be wondering why? Well, GitHub is a major tool that developers use to, well, develop, and how we’re going to help you create, fix, and build websites.
GitHub allows users to have an unlimited number of public repositories under 2GB each. Your source code is publicly available to the world for them to view and fork (copy). This is great, as it encourages “open source” software projects. Open source software encourages the development of shared knowledge and progress within the open source community. It also means that all code is publicly viewable.
Benefits
Advanced Collaboration Tools. As you saw in the above video, GitHub also provides advanced collaboration tools. This is not something you will use much this semester. However, it is important to know about and you will use it in future projects.
Static Website Hosting. GitHub also provides a service known as GitHub pages. This service provides free static website hosting. This is what you will primarily use this semester to host your web projects. (Did I mention it is free? This means you do not have to purchase server providers from another company.)
Community Wiki Pages. Each repository also contains a community-editable wiki page, which can provide in depth information and how-to tutorials on a specific project.
Issue Tracker. The Issues tracker serves as a place for people to create new “issue” or “feature requests”. This can then be used to assign people to work on these issues, ask for help from other users, or track the progress of a new feature.
GitHub & This Course
This course website -the one you are looking at right now- is being provided to you entirely through GitHub, hosted via GitHub pages.
Also, almost all of the resources for this course that you will need are available from a course repo. You will submit links to your homework assignments as “Issues,” which will allow you to see each others work as well.
You will also be expected to commit “issues” which might be problems or questions, and you will also be expected to respond to issues your classmates are having.