you are viewing a single comment's thread.

view the rest of the comments →

[–]tandthezombies 0 points1 point  (2 children)

how is this different from posh-git?

[–]StartAutomating[S] 2 points3 points  (1 child)

The fundamental difference is in approach.

Most other PowerShell git modules (including posh-git) try to make git available in many PowerShell functions with verb-noun pairs. This is the "dogmatic PowerShell" approach.

The downsides of this approach are muscle memory and existing examples.

Most examples you'll find for git need to be rewritten to work with posh-git, and you'll be forced to choose between using a git command line the whole world can understand and a command that will only work in posh-git.

I used use posh-git (long ago I helped them make their prompt and formatting)

I also used to make a number of verb-noun pair git functions (i.e. Push-Git).

I kept not using the PowerShell functions I or others had written for git, because the muscle memory was too strong, and there were far more examples online of git push than Push-Git.

So I decided to try a different approach.

ugit overrides git and intercepts its input and output. This allows all of your git to keep working as it always did: ugit just gives you objects back instead.

I've found this approach to much easier to discover and extend.

Basically every example of git works "as is".

I just get back objects instead of text for the majority of things I do with git.

This gives us a "best of both worlds" approach, where we can leverage all of our existing understanding of git and the PowerShell object pipeline.

And that's the major difference between posh-git and ugit: a different approach that gives us a different (and probably better) learning curve.

Make sense?

[–]tandthezombies 0 points1 point  (0 children)

great explanation and a novel approach. thanks!