BitBucket vs. GitHub — VCS and repo management tools compare

I decided to migrate from GitHub to BitBucket purely for economic reasons.

On GitHub I can’t have any private repository in my free account. I have to pay for every non-open source project that I host there. On BitBucket I can have unlimited number of private repos and I’m only paying for users, that has access to each of my repository (first five users are free).

Read More “BitBucket vs. GitHub — VCS and repo management tools compare”

Please rebase the change locally and upload again for review

You’ve passed all the way of flames, blood and pain, through Gerrit, you done reviewing a change and you’re ready to click Review and Publish button. You hit it and Gerrit hits you with: Project policy requires all submissions to be a fast-forward. Please rebase the change locally and upload again for review. How, the hell this happend and how to handle this?

Read More “Please rebase the change locally and upload again for review”

Gerrit is wrong. Gerrit is evil!

Gerrit is wrong. Gerrit is evil. Gerrit is the beginning of all hell! If you’re considering using it as version control system, you’re most likely out of your mind! And you’re asking yourself for a big troubles. If you’re forced to use it (like I was), then believe me… your worst nightmares are ahead of you. Nothing, you seen in code review or version control systems up until now, hasn’t prepared you for the pain you’re about to suffer…

Read More “Gerrit is wrong. Gerrit is evil!”

Change could not be merged because of a missing dependency

Gerrit is hard. If you found Git (behind Gerrit) hard to understand and operate, then don’t worry — the real hell is still before you. And one of the biggest Gerrit newbies’ nightmares is situation, when Gerrit is unable to auto-merge particular change, showing “Change could not be merged because of a missing dependency” message. This mostly happens, when you abadon another change, on which current change depends.

Read More “Change could not be merged because of a missing dependency”

Push local repo to a new remote with all branches tags and all the history

Since both me and my boss / admin are kind of newbies to Git and since our both vision on how application structure should look is a way different, we quickly did a quite pretty mess in our main repository and got lost a little bit! :] After some short talk, we agreed on one thing (at least). We need to make a new, clean Git repository and push everything from my local repository to it.

This brought us to a question, how to do this? After a short googling, I found these Stack Overflow questions:

but none of them gave me a quick-and-dirty answer (or: checklist) on how to do this, without too much read.

So, I decided to write my own. Once again, Git turned out to be much better and much easier than SVN.

Read More “Push local repo to a new remote with all branches tags and all the history”

TortoiseGit asking for password on password-less login setup

After months of uninterrupted password-less work, my TortoiseGit started to ask me for a password on some of my remotes, when pushing / pulling. I’m seeking a solution to fix this, as this can drive me crazy. I haven’t found a good fix so far, so don’t treat this article as an ultimate solution. Nevertheless, you can get a quick check-list out of this text to see, what I’ve managed to find out so far.

Read More “TortoiseGit asking for password on password-less login setup”

Git did not exit cleanly (exit code 128)

Probably the most popular error in TortoiseGit is:

git did not exit cleanly (exit code 128)

And all, it tells you, is that something was wrong when calling git.exe internally.

Right… That’s pretty not much, don’t you think?

Well, this StackOverflow question may help you, at least in certain situations. It has 14 answers (from dumbest, like not updating program to newest version) to quite interesting one. This could be a good starting point, before looking somewhere else.

Setting up password-less connection in Git Bash or cmd

All right, we’re after Setting up password-less connection in Netbeans and Setting up password-less connection in TortoiseGit, now it is time to do the same in “pure Windows”, that is: to be able to establish password-less connection with any Git-based repository in command-line (both cmd and Git Bash).

If you were using your repo in Netbeans and/or TortoiseGit painlessly, but each attempt of doing the same in console, ends up with annoying message:

Disconnected. No supported authentication methods available (server sent: publickey)

then you’re in right place to get help.

Read More “Setting up password-less connection in Git Bash or cmd”

Setting up password-less connection in Netbeans

Following Setting up password-less connection with GitHub in TortoiseGit article, here are tips on how to setup password-less connection between your GitHub account and your local repository operated under Netbeans. The easiest way to setup password-less connection, is to do this on initial GitHub repo clone or pulling. And it will be presented this way, in following article.

Read More “Setting up password-less connection in Netbeans”

Setting up password-less connection in TortoiseGit

Both mysysgit and TortoiseGit are password-less in the meaning, that they don’t store any passwords. If you want to avoid typing your GitHub login password and over and over again, the only option is to setup password-less login using SSH keys. This article is my personal check-list on how to configure each computer as painlessly as possible.

Read More “Setting up password-less connection in TortoiseGit”

Git in Netbeans — Push or Push to Upstream

Netbeans’ Git client is a bit different that others (like TortoiseSVN) and offers additional option for push/pull commands (starting from version 7.3). It is Push to Upstream and Pull from Upstream. What is the difference from regular “non-upstream” versions. Not to big. Second (“upstream”) ones offer dirrect execution of command, without displaying any dialog (if properly configured). While regular (“non-upstream”) always opens Push to Remote Repository dialog.

So, after initial configuration, it is more convinient to use Push to Upstream instead of Push.

It is always a few clicks less, right? :]

Read More “Git in Netbeans — Push or Push to Upstream”

Dealing with “Non-fast forward updates were rejected” error in Git

If your attempt of pushing local changes in your local working copy of a Git repository to remote server fails with “Non-fast forward updates were rejected”, there are several things you my try to fix it. Here I give you some advises, but read comments around them throughly, as without being sure, what you’re doing, you may do some charm to your local working copy or even remote repository.

Read More “Dealing with “Non-fast forward updates were rejected” error in Git”

Using Netbeans with existing SVN or Git repository

Netbeans is known to not work correctly with existing local working copies of remote repositories for both SVN and Git. Especially, if they were checked out using client other than built-in into Netbeans. For example, Netbeans does not allows to enter login and password (fields grayed) and thus can’t operate on these LWCs.

If you’re experiencing such or similar issues, you’re highly recommended to delete local working copy and checkout it again, using Netbeans internal client. If you have some changes stashed, you should think about committing and pushing them using different client and then delete LWC and checkout it again.

Professional Git commit comments

Git commit comments / log messages are (may / should be) more complex than those from Subversion. They can be automatically converted into e-mails sent to other commiters or other kind of group of interest. Some Git commands and tools may generate additional commit messages. That’s why comments written by you manually, should follow some rules and guideline. Most of them are expressed in this article.

Read More “Professional Git commit comments”

Using git-svn under Windows for migrating SVN repo into Git

I wanted to import SVN repository into Git repository, where SVN repo had uncommon structure (without trunk / branches / tags folder). And I wanted to skip all the remote branches stuff, just export entire SVN repository as current master branch in Git repo.

Note, that I used console commands (like git svn) only to do hard job of migration. Other stuff, that I was able to achieve in TortoiseGit (like pushing to remote) I did manually.

Read More “Using git-svn under Windows for migrating SVN repo into Git”

Installing SVN on QNAP using IPKG (Optware)

This article is based on information provided by QPKG package created for SVN by noski and on QNAP Wiki article about SVN and of course a piece of my experience. But since SVN is relatively easily to install by-hand (so you don’t actually need QPKG package) and since Wiki article about SVN is outdated / contains some garbage (directory /share does note belong to /dev/ram!), I decided to write my own guide.

Read More “Installing SVN on QNAP using IPKG (Optware)”

Synchronize directories in Total Commander ignoring certain files

The Synchronize directories tool in Total Commander is magnificent and I’m using it very often for all my backup-like and sync-like works. The only thing, that I was missing is an ability to ignore hidden system files or files stored in .svn or .git folders, i.e. hidden version control files. So, I wrote to Total Commander’s author and received immediate response, that this is possible.

Read More “Synchronize directories in Total Commander ignoring certain files”

What Agile is NOT?

If you ask Google on what is agile software development you’ll find thousands of results. Let’s then turn the table around and say what agile isn’t.

There’s no agile development, if:

  • there is at least one-man team,
  • iterations are longer than 4-6 weeks,
  • development is not started before the analysis is completed,
  • delivered code is not thoroughly tested at the end of each iteration,
  • each iteration does not end with the production version of the application,
  • progress is measured by lines of code or hours, and not by a delivered results.

And the most important — Agile is not a miracle solution to all your problems! You know:

Agile is not the remedy, the magic cure that will solve all the problems. It will only make them so painfully visible that further ignoring them won’t be possible.

Ken Schwaber, a SCRUM’s co-author