gmaster now supports PHP

Monday, February 04, 2019 4 Comments

PHP is used broadly across the web. Any given user of a popular programming language like PHP would expect the tooling supporting the language to be problem-solving, right?

Well, that's all the latest gmaster update is about. If you are a PHP developer, you can now benefit from diff and merge capabilities that understand PHP.

In essence, what this means for PHP users is that using gmaster as your Git client will render more automatic merges to your code base as well as help prevent conflicts during integration. How does this magic happen? Read on.

Git client with semantic super powers

Have you ever been confused about merging or rebasing PHP code? You have a staging / testing branch with a couple of commits and you want to merge it to main development branch, crossing your fingers that no conflicts arise. With gmaster's new support for PHP the number of automatic merges will dramatically increase because it now understands the language. In other words, what other merge tools consider a conflict, gmaster won't. Let's say a developer makes changes inside a method. That method, in the eyes of a random merge tool will look different than the unchanged method, but under gmaster's PHP parser, it's not. That is just one example of a minimal change that could generate integration conflicts. See below other examples from the gmaster's interface:

In this example, a changed and moved method conflicts with a changed method. The tool will identify all changes affecting the same method:

An evil twin conflict will also be detected as shown below:

Monster merges

Some of the merges performed in small code bases do not need to invoke the semantic powers of gmaster. It is when a massive, full of conflicts, merge comes your way when a tool like gmaster becomes extremely handy.

To demonstrate this, we ran some tests and collected some numbers to help PHP users measure what would this mean for their projects. Although the test ran on a C# repo, there is nothing in the PHP grammar that would prevent gmaster from getting the same or even better results.

gmaster's semantic merge tool was tested with the Git Extensions repo. Every commit with two parents was taken as a merge. Once the list was ready gmaster, ran every merge again. This is what we got back from it:

We found that between 16% to 30% of conflictive PRs can, in fact, be fully automated. In fact, 28,57% of all the manual merges can be automated. In other words, 98 manual merges could save up to 24,50 hours of conflict resolution time.

Drilling down to the actual files conflicting in manual merges, after running our test we found out that 41,92 % of the manual file merges could be automated. Specifically, 332 manual file merges are automated with gmaster. That is 16,60 hours of integration work saved with an adequate solution.

gmaster is free PHP, pirates!

PHP is the 4th language by usage in GitHub. Although some people have said nasty things about PHP, yet there it is, atop usage charts of a platform hosting over 96 million repos that grow at a 40% yoy. Facebook themselves build part of their platform with their own flavor of PHP!

If your VCS of choice is Git and your preferred programming language is PHP, you have a complete Git client with semantic steroids that can solve most of your integration conflicts.

We develop gmaster, a Git GUI with semantic superpowers. It parses the code to really understand how it was refactored and then diff it and merge it as a human would do, matching methods instead of lines.

If you want to try it, download it from here.

We are also the developers of SemanticMerge and Plastic SCM, a full-featured version control.


  1. Seems promising, would definitely give it a try, thankyou

  2. Hi
    Great that you keep doing fantastic work.
    I have two questions and appreciate if you answer:
    1) Do you plan to add support for self-hoster GIT servers and/or Self-Hosted Bitbucket?
    2) Is there any GMaster forum available (like for PlasticSCM)?

    Best regards

    1. Hey, I can answer 1) with yes, since I'm currently using it with a privately hosted GitLab server! It's not a completely smooth ride to get working, but the support team has been very helpful to me.

  3. They can easily avoid writing additional code by executing conditional code through ternary operator instead of If/Else statements.web design company Toronto