Source control management is tracking and managing changes to the code. It provides a history of code development and resolves conflicts.
Source Control Management
Source control management is incredibly important.
If you are working as a team and frankly saying that you should be using it even if you’re by yourself.
Because it gives you an incredible amount of safety for when you’re writing your code that you’re not used to.
So first let’s talk about working with other people.
Think back to whenever you have a partner for the first time how did you share your code with that partner?
Did you put it in an email and email it back and forth?
Did you drop snippets of code into a chat window?
Did you snip or take snippets of code and don’t tell them where it was from and put them in a chat window?
Did you get extremely upset with this other person probably?
So source control management is what allows you to not do that and also does wonderful things like keeping backups of everything that’s going on.
So if you’re by yourself and you’re working on your own.
A point that you’re like okay my software is good now and then you find out whoops that now personal project.
I still highly recommend that you do it with source control.
Because if once you set that up and you want to roll back a day then you can do that.
That’s why you do want to use source control management.
Now it allows you to have multiple people working.
If there is any conflict there are different version control systems that have different ways of allowing you to merge that code.
So if for instance you’re working on file A and we are working on file B and we both add our code to the repo to the source control system at the same time.
The system goes ooh and just kind of adds them but if we’re both working on file A, it’ll go huh uh what?
There are the versions someone makes a call and that’s very handy.
Now there are tools to help you do that too but you can also do it manually.
When you have a source control system running it keeps historical versions of your project so you can go back to a timestamp a particular time that you have saved the code which we’ll call a commit.
And if you’re also using a system cloud-based system like GitHub or bitbucket or any of the other hosting you also have it backed up so you can work on it from any machine.
What’s great is there are a lot of in-browser editors now that will pull code from these services and let you edit in browser and still save and that’s fantastic.
So tons of great stuff you can do here tons of things that will help you be a better developer.
Here are some examples of some source control management systems some of you know some you probably never heard of like CVS not the drug store concurrent versioning system.
CVS has been around for a very long time you don’t see it any more subversion that was the
hotness when I was an undergraduate, and that, was when SourceForge was doing its thing.
Subversion is fine it’s still out there.
Git and mercurial were kinds of the newest ones on the block and Git has won that battle.
There are others as well like bizarre libra source monotone and there’s even more out there.
There are proprietary ones from Microsoft for priority ones for IBM that you may or may not ever run into in your life.
Source Control Management System Types
In general, we can break a source control management system down into two large categories:
- Distributed Source Control Management System
- Centralized Source Control Management System
Okay now, why do we care?
How does this work?
Well, the older systems were centralized so things like subversion and CVS were centralized and the newer ones tend to be more decentralized or distributed.
The key metric here is how many repositories are there and some people might say but there’s only one server where it gets kind of weird.
Here’s what I mean let’s get the definitions first.
What is a repository in a source control management system?
Well, it’s where you keep track of the changes in the files stored there.
Then you might not have all the versions of the files it might have.
You know different files showing.
How files have changed over time?
A repository just needs to have the ability to recreate files at a particular timestamp.
Now the repository is not where you make changes to the working copy of the working tree.
In source control management system terminology, there are a bunch of different possible names out there.
That’s where you’re making changes.
So you have your working copy and this is where you’re editing you’re building you’re changing.
And then whenever you’re done you’re like I’ve passed all of the tests I need to pass.
I feel comfortable with this code.
That’s when you do a commit.
Committing the code | Source Control Management
A commit in source control management is like save.
If that helps you, that’s like the save button.
Git is a very useful utility in Source Control Management.
Yes, you’ll be saving to the disk but this is like saved to the repository.
There’s an extra step so let’s explain how that works with a centralized source control system like subversion.
There is one repository, okay and that one repository tends to be on a server somewhere.
If you want to make changes you do a checkout tends to be the word that you check out from that centralized repository that and that code comes down locally.
That’s your working copy and you make changes and now you’re going to do a commit and when you do that commit it commits back to the server.
Okay, if there are any conflicts you get an error message.
You have to do the merging whenever you want to.
Before you do a commit you tend to want to do an update and pull all new changes to make sure there’s nothing weird.
That’s happened then you commit your code and it goes back and forth.
Now distributed increases the number of repositories so there is a single repository that’s on the server that’s considered the origin.
This is a term that you see in Git or GitHub and that origin is considered kind of the main repository.
Okay now, when you pull it locally you don’t use the word checkout use clone.
Just think about that from just a perspective right in checking out it’s like you’re pulling it down.
In clone, we are copying it down but it might help you.
When we are cloning we are cloning the entire repository and so I have an exact copy of what is in the original repository that I can work on locally.
When you’re local you also will then have a working copy.
It could be the same directory.
Sometimes a repository is a hidden subdirectory.
We will discuss that in a minute.
Then you start editing, you commit but that commit happens locally.
Okay, that commit is happening locally, it is not happening on the remote.
It’s not happening on the origin so you’re not seeing any new changes from other people.
You at some point have to do a pull to get other people’s changes.
Once you’ve done all your commits locally, you have to do a push to get it back up to the server so there are more steps commits happen locally in a distributed.
And then you have to push back up to the server whereas, in a centralized, a commit goes back up to the server.
It’s an extra layer but it helps a lot.
It allows you to do a lot more things where you can build out brand new versions of the system locally without affecting anything that anyone else is doing.
So in getting, you work with a working copy locally and you can create a new one by using various command-line commands.
You can use tools to do this.
How you that in a second or you could clone from another server in the working tree?
Pushing to Git | Source Control Management
Once you create a new file it’s not immediately under the control of Git.
We need to add it so that when we commit it and then push it to the server it then actually moves up with it.
So the terms you need to know are things like clone when we’re going to pull down a repository, make a clone locally, fetch getting the new versions to pull.
We pull the new code down and push when we push our changes back up.
So your workflow should look something like this, you start, you fetch the new code if there are new branches you’re working with you merge those and you start coding.
You commit locally over and over until you feel good with where your code is.
Then you push it back up or you make a pull request which is a GitHub thing and then you kind of go from there.
So let’s look at how some of this works.
If other people are building the code, their system is going to want to create their files as well.
So in general you want to block those from being stored.
Log files don’t want those up there those are useless to other people who don’t want the compiled files.
So the Git ignore file is super important.
When you are in the root directory and now you are gonna say that just clear that and change the directory over to GitHub, which is gonna be the working directory.
We are going to get a clone and paste that.
Now what this is going to do is it’s going to do a checkout and it’s going to do a clone of that repository locally.
Now when you have already installed yet into your system and it already knows who you are and I’ve set up things like ssh keys.
The source control management system tracks and manages changes to the source code of a program. It provides a history of the development process and resolves conflicts by merging the pieces of the code if required.
Read More about Source Control Management.
You can read about Amazon Source Control Management System.
This Source Control Management is also used in Emulation applications.
You can download AMTEmu AMT Emulator to activate all adobe products free.
Also, download GenP Adobe here.
Zii Patcher is another amazing free Adobe Products Activator tool.