Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

Wednesday, April 30, 2014

Git From The Command Line

After spending a few years being involved with the Linux community, one of the items that has always amazed me is the number of people who still are not sure how to use git from the command line. There are a number of GUI programs available to make this process easier for those who are uncomfortable using the CLI, but in reality the process of editing and pushing a program from one’s computer to the Github repositories is not very difficult when someone takes the time to show others how to go about the basic steps.

In this tutorial, I’m going to cover the basics of how to open a program using Vim, make a small change to that program, save it then push the changed program up to the Github repository. All of this will be done from using the terminal so no extra programs need to be used. This is often the working scenario for people who work in a GUI-less environment or have to interface with headless servers. I’m taking into account that the person following this tutorial has already followed the instructions of setting up a Github account, repository and established an ssh key pair with their account. The instructions for setting up git are easy to follow and can be located here:  https://help.github.com/articles/set-up-git.

Once a remote account and repository has been established then connected to a local directory, the rest is simply going through the motions of making it all work. For starters, open a terminal session such as Konsole, X-Term or whatever comes with the operating system.

start.png

Once the terminal is up and going then simply navigate to the directory that was created specifically for communicating with the established Github repository using git.

cd_to_git_dir.png

Now that we are working inside the established git directory, the next thing to do is open the particular program we are going to be working with. For this example, we are simply going to open the all-too-familiar “Hello World” starter using the Vi or (Vim) editor. Vim runs directly in the terminal rather than opening a separate program. This makes life much easier as we don’t have to leave the environment we are already working in. To open Vim and start working, just type in the following command:

start_vim.png

Once this is executed, the terminal will automatically switch over to the Vim editor for making any necessary changes to the program.

editing_a_program_with_vim.png

Remember this is all happening without starting any external programs! Make any changes to the program using the Vim editor then save those changes. When the changes have been saved, Vim will automatically close and bring the user back to the command line where they left off.

The next step is to get a status report from git that shows us what has changed from the last time we accessed our local repository or git directory. The command to see any changes made is “git status”.

input_git_status.png

When this command is invoked, git is going to give a response that shows all the changes that have been made to any programs in the git directory we are currently working in.

message_from_git_after_running_status.png

In this case, we only modified one program and that modification is being reflected here in red text. If we had been busier and had multiple changes to many programs all in the same git directory, all those files would show in the list with hint notes of suggested actions based on the action to to do next.

In this basic example, we are simply going to invoke the command “git add” which is similar to clicking on a checkbox in a GUI and selecting the file to be added to the next operation. If there were more than one file, we could add one or a few to be added to our next commit which will get a specific message attached to it that lets others know what changes were made in case an entire group is working on the project the file is associated with.

input_git_add_to add_file_for_pushing.png

Once the “git add” command is executed, git will not return any acknowledgement of what has been added unless the command is executed incorrectly. Sometimes I believe it would be nice to receive a confirmation of what has been added to our list but, I’m not a developer for git so they decide what is relevant and what isn’t.

Once all of the files to be added to the current commit have been added to our list of files, it is time to commit them to be pushed up to the remote repository. Git strongly suggests that comments be added to any commit as it is part of the “essence” of collaboration using a version control system (VCS). To make this process easy, we invoke the “-m” to our command and add a message to be associated with the file’s commit such as below.

input_git_commit_string_with_memo.png

The string contained in the quotes is the message to be added to our commit. This message will accompany all the files that were included in the “git add” process. As such, if we want to have a separate message associated with multiple commits, then only add certain files at a time that will receive any particular commit message. If for any reason the “-m” is left out of the commit syntax, the terminal editing program”nano” will execute by default and ask for the message to be attached to the commit. It’s much easier to just remember to include the “-m” in my opinion unless a person prefers the added step of using the nano editor.

When the commit command is executed, a message similar to the following will be displayed from git:

git_commit_return_message.png

This message just reiterates the changes that were made to the file, the commit message that will be added to the commit as well as the relevant version control numbers that will be associated with the commit when pushed up. It should also be noted that it is completely acceptable to stop at this point and go work on something else. Each command is it’s own entity and therefore do not need to be executed immediately. For example, a person may want to only push all their changes to the remote repository on Friday afternoon or on Monday morning. Or, a person may simply run a cron job to have all their pushes done on a certain day of the week at a certain time automatically.

For this example though, we’re going to go through each step individually so that we get the basics of what’s going on before jumping into ideas of batch pushes or cron jobs. : )

The next operation to perform is just simply execute the command “push” like shown below:

input_push_file_to_remote_repository.png

Since this entire time we have been working in our established git local repository, the “push” command is going to push our local changes to our remote server repository located at Github. This how we share our work with others so we can all collaborate on the same project while working from anywhere. Once the “push” command is executed (in most circumstances) the following message will appear:

input_password_for_ssh_key.png

What this message is asking for is a password associated with a registered ssh key at the remote end. Having an ssh key pair is not a requirement to use Github VCS although, it should be noted that it is an excellent security and identity measure to verify that the changes being made in the repository are actually coming from you and not someone else. An ssh key pair is like a fingerprint that distinguishes a person and the computer they work on from everyone else in the world. Even if a person were to try and imposter someone from a different terminal, without the private key being on their machine to match with the public key registered at Github, the push would not be accepted. As such, a person needs to understand that using key pairs is beneficial from a security point of view but can also be a hindrance if working from a foreign machine.

From this point we type in our associated password that identifies us from everyone else and allows the ssh tunnel to push our code from our machine to the remote server securely and encrypted. When finished, git will give us a nice confirmation message that lets us know everything was completed as expected.

git_message_after_pushing.png

At this point we have finished editing our file and pushing it up to our remote repository and accomplished all of this without having to leave the terminal for any reason. The next step is to verify that our changes did in fact make it to their intended destination which involves opening a browser and navigating over to our Github account.

Once we do that, we should be able to go to the repository that is associated with our local git directory and find the file in question as well as the commit message we attached to that file.

github_verification.png

As can be seen from this snippet image of the Github repository line, the file “hello_world.pl” was received and in the center is the commit message we added using the “-m” on thecommand line. Navigating the various links on Github will provide further details of our commit including the actual code and all associated changes highlighted for ourselves or others to refer to later.

I hope this tutorial has explained in detail the simplicity of using the command line to both edit files and push those edited files to the Github version control all done from the command line.

Monday, January 14, 2013

Dexpot - Virtual Desktops for Windows

For those people who are still using Windows, or especially those frustrated with having to use it at work or some other reason when the preferred OS is a Linux distribution, this free program can make life a little bit tolerable. Dexpot is a nice little program that allows Windows users to enjoy the functionality of multiple virtual desktops we Linux users have come to appreciate and rely on to be more productive. After years of working with multiple desktops, sitting in front of a Windows machine and flipping through tabs and tabs of open applications I constantly remind myself how spoiled I am to have something so simple associated with my OS that just makes daily life a little easier.

The writers have done a great job at making installation as simple as just a couple of mouse clicks. After all is installed, this little program runs in the background and when set up, can show icons of all the desktops in the taskbar.


A simple click of the dropdown arrow or icon in the taskbar will show the control panel for Dexpot where the user can go into the program and make tweaks and adjustments to set the program up to their own personal liking.


For those who have never worked with virtual desktops before, I would personally suggest trying a variety of settings to see which ones work best for their particular style of usage. I actually prefer a little bit of extra “eye candy” to my daily functions so I prefer having the cube do my desktop switching graphics. I have also found it handy to have icons show up in the various taskbar screens so I have a reminder of what I have open and in which desktop. The image below shows that there is quite a bit of functionality built into this little program that by the way, is FREE for private use!


From the standpoint of a seasoned virtual desktop user, the most used functionality I found was under the General tab (of course) to select the number of desktops and under Switching Desktops and Plugins and Extras. Clicking on the various plugins will activate them so there’s no worry about getting lost in all the functions available or running into stuff not necessary while doing various things.


Under the controls tab, users can select a variety of mouse gestures or hotkeys that may be useful for some individuals. Just remember that assigning hotkeys to Dexpot could interfere with other hot key controls that are used for other routine functions so proceed with caution when exploring with these options.


Below is a shot of the options available with mouse controls. Sometimes it’s handy to be able to switch desktops just by pushing the mouse to the right or left of the screen and waiting a few hundred milliseconds. Other people may find this annoying and turn this function off. Most options are off by default which makes it much easier to set up Dexpot to your liking since I believe that most people find it annoying to have options on then try and figure out what it is they need to turn off.


Below is a screenshot I captured of the cube plugin screen switcher option. As I mentioned, there is a lot of options to go through and a lot of useful functionality built into this free program. If a person is accustomed to using a Linux OS and wants the functionality of their virtual desktops carried over to a Windows machine then this is the answer to make your life more tolerable. For those who are already Windows users and really don’t understand much about what is being presented in this article, I suggest giving it a whirl and in just a matter of minutes it will become clear. Either way, Dexpot is one of those great free programs that has changed the way Linux users appreciate the time they have to spend on a Windows machine.


Download Dexpot @ http://dexpot.de/