C++ Vectorization Diagnostics

Vectorization is transformation of series of single operations into instructions which perform operations over multiple values simultaneously, by using the so-called “vector operations (or instructions)” – MMX, SSE, AVX etc. (SIMD). Modern C++ compilers do these transformations automatically for speed-optimized builds, however the vectorization can be prevented by various reasons. By default the compiler does…

Switching off Windows Virtual Store

CZE Windows File System and Registry Virtualization (Virtual Store) is a technology to provide backward compatibility for legacy applications, which require unlimited access to system locations like “Program Files” or “Windows” folders, “Local Machine” registry, etc. Unfortunately, this technology can significantly affect the performance of applications, therefore it can help to disable it in some…

GitHub: Continuous Integration with Travis CI

Travis CI is a Continuous Integration solution, available to the GitHub users out of the box. In particular, it provides build and unit test automation, triggered on each push or pull request. The results can be reported to one or more e-mail addresses or on the project site. The free version of Travis CI is available for public GitHub repositories, there also exists a paid version which can be used for private GitHub repositories. This makes the tool very suitable for Open Source projects hosted on GitHub.

Advanced Git branch filtering

Branch filters is an advanced Git feature, which is used less frequently, but there are situations where it can be quite handy. The branch filters can be used to manipulate (rewrite) multiple Git commits in the repository in a single step. It can be either a specific set of commits, the entire branch, or even all…

Conversion of SVN repository to Git

Migration of a Subversion (SVN) repository to the Git distributed version control system. In contrary to the CVS-to-Git migration, the guide does not make use of external scripts (like svn2git), as the Git built-in support of SVN is working reasonably well. For the following steps, it is recommended to use the GitBash command line under…

Migrate CVS to Git with cvs2svn

The following article describes how to migrate an existing CVS legacy repository to the more recent Git version control system, using the Tigris.org cvs2svn script.

The Git actually has some sort of direct support to import from CVS repositories, the git cvsimport command. However, although this command is better suited for incremental conversion from CVS to Git than the other alternatives, for one-time migrations there are some known issues. Therefore I prefer to use the cvs2svn bundle (specifically its cvs2git module) for one-time CVS-to-Git migrations.

Restore lost commits in Git

So, you’ve called a git reset –hard on a wrong branch or did some other destructive action (perhaps a wrong rebase, amend etc.), and lost some important commit(s) in the repository.

Well, fortunately nothing is actually lost, and Git allows us to recover such detached commits. Even amended commits can be restored back to the previous state using the following technique.