Sep 08

Two days ago I have had the problem, that our customer wanted an already deleted calculation back. I knew the name of that class, so first I had to find out when it was deleted. This can be done in two ways

List all deleted files

git log --diff-filter=D --summary

Find sha-1 key of your missing file

git rev-list -n 1 HEAD -- ./path/to/file/MissingFile.java

Now, we can checkout the previous revision (revisionNumber^).

Recover a single file from a commit

git checkout revisionNumber^ -- ./path/to/file/MissingFile.java

We’re done! The file is recovered.

This solution was found at stackoverflow. Charles Bailey’s solution helped me the most.

Tagged with:
Aug 29

This one is a must have! If you use IDEs like IntelliJ IDEA you are used to press magic keys. Here is how you add some magic to the usage of git from your bash terminal. You need the git bash completion. If you use Homebrew and installed git you can start immediately with modifying your bashrc. In my case I change /etc/bashrc.

Git Completion

# add git completion
source /usr/local/etc/bash_completion.d/git-completion.bash

That’s it! Now enjoy the power of the tab-key: Complete git commands, sub-commands, branch names, remotes, …

Git Prompt

The above defines a git prompt as well. You need to add $(__git_ps1 ” %s”) to your prompt.

PS1='\[\e[0;32m\][\w]$(__git_ps1 " %s")\n\u@\h$\[\e[m\] '

Everything between the double-quotes will be displayed in your prompt. The %s will be replaced with the current branch name. Some more information can be
added with flags (see comments in git-completion.bash). I like these:

GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWUPSTREAM="auto"

GIT_PS1_SHOWDIRTYSTATE displays unstaged changes “*” or staged changes “+” next to the branch name. GIT_PS1_SHOWUPSTREAM=”auto” indicates if you are behind “<", ahead ">” or diverged “<>“.

Sample

KYPSTA-2902-hdnCode-for-SecurityProvider is the branch name, I have untracked files and I’m ahead. Cool.

To do a good job we should finish with coloring our terminal.

Tagged with:
Jun 19

A couple of days ago I bought a MacBookPro and so I switched from Ubuntu to MacOS. Unfortunately Apple did not ship their unix-version with a package-manager. After a google search I found two alternatives. MacPorts and Homebrew. The press for MacPorts seems not as good as for Homebrew, so I gave Homebrew a try.

For both you need Xcode to be installed:(
UPDATE: At least for Homebrew this is no longer true – see Homebrew without Xcode – save 1.5 GB

sudo curl -L http://github.com/mxcl/homebrew/tarball/master | sudo tar xz --strip 1 -C /usr/local

Done! This commands will download homebrew and extract it into /usr/local. Some advise you to change the owner of /usr/local. I don’t and add a sudo when I install something. Time to demonstrate it:

sudo brew install maven

Maven is installed. Try mvn --version. If you want to know what is extracted and installed use the verbose mode:

sudo brew -v install maven

The most common things you will need are available: maven, gradle, git, groovy, all there. If s.th. is missing the support reacts quiet fast. Check the so called formulas if your required package is available.

Next, I tried to uninstall a package. Works as it should.

So far I’m happy and recommend it.

Tagged with:
preload preload preload