Switching to git (Windows experience) (was re:[cfe-dev] GitHub anyone?)

Some developers on Windows prefer to use GUI tools like TortoiseSVN to
command line tools for version control. The last time I tried
TortoiseGit on Windows (which was over a year ago), it did not feel
ready for production use on a complex project to me (I had crashes on
simple operations, and it seems I was not alone in seeing flaky
behavior: Windows 8 Explorer Crashing (#1738) · Issues · TortoiseGit / TortoiseGit · GitLab and
Windows 7 explorer crashes (#2494) · Issues · TortoiseGit / TortoiseGit · GitLab as examples).

Are there suitable GUI tools for git on Windows for projects as
complex as LLVM? I believe MSVC has some integration, but I've not
used it before. Perhaps other tools exist that match the integration
and stability that TortoiseSVN has with Explorer?

I bring this up as a possible minor concern because asking people to
switch from one set of command line commands to another set of command
line commands is a different beast than asking people to switch from
Explorer-integrated menus and dialogs to the command line (that's a
drastically different workflow to achieve the same end result of
source code version control).

~Aaron

im using a combination of TortoiseGit (which works very well), Git Extensions (https://gitextensions.github.io/)
and GitKraken (https://www.gitkraken.com/)

The GitHub app is ok. Not great, but ok. I guess this is one point in favor of GitHub vs. other git providers. As a maintainer on a different project, I still had to jump out to the command line pretty frequently, as we had a squashed pull-request work flow.

I did not have much success with git plugins for Visual Studio. They seemed to be tuned towards in-tree builds. I didn’t spend enough time to figure out how to get them to work with out-of-tree builds. More specifically, I recall that Visual Studio really expected the project and solution to be in source control, and in the same directory hierarchy as the source. It’s been a year since I’ve messed with them though, so things might have gotten better.

You could try Git GUI [1]. I don't know if it's any good, I've only
used Git BASH on Windows (never had any problems with it).

Diana

[1] https://git-for-windows.github.io/

Have you tried any of these?

https://git-scm.com/downloads/guis

I've tried git-cola and gitg on Linux, and neither I nor my son liked
it enough to move from command line to a GUI. But we're not GUI folks,
so it could be that. We also tried some Android clients, and they are
crude.

Though, that GitHub app looks really nice!

cheers,
--renato

Sourcetree is pretty good on windows, and I hear ok things about Git Extensions. I have not used the GitHub app though.

I typically use Sourcetree to view the logs, and command line for everything else.

We switched from SVN to git internally some time ago. I polled our team in this morning’s meeting. Some people who habitually work on Windows are using things like Sourcetree or gitk for browsing, but we’re generally doing the “real” work from the command line.

–paulr

One of the things that may taint my prior analysis…

At the time I was last evaluating Windows git GUIs, I was looking for something that would make handling .patch and .diff files easier. In particular, if a patch didn’t apply, I really wanted to get some visual indication of which hunk failed, and some interface to resolve the conflict. I didn’t find any tools that handled that well. Most tools didn’t even expose ‘git apply’ in the UI at all.

If .patch file workflows aren’t expected to be the norm for llvm, then that feature isn’t terribly important. SourceTree may be a fine tool in that world.

I’ve had great success with SmartGit. Since it’s java based it also works on the big-three of platforms.

I'm primarily a Windows user and have been using git for llvm for a
long time now. I use a combination of:

* SourceTree: log viewing and committing
* kdiff3: merging conflicts
* gitk: amending (SourceTree cannot yet handle unstaging chunks).
* command line: branching, svn dcommit, rebase, pull, merging,
applying patches, etc...

The only thing I actually have to use the command line for is rebase
-i, however I find the command line interface much better for the
things I use it for. It's also much faster for commits that aren't in
the past few days.

MSVS git integration is terrible and not worth touching at the moment.

- Michael Spencer

+1 for SmartGit, good for browsing the commit log, resolving conflicts or staging code chunks in an editable 3-pane view.
Though I would fall back to the usual cli for everything else.

GitKraken also looks interesting, but I haven’t used it enough to evaluate it properly.

IMHO explorer integration is overrated and causes too much slow down & instability.

Some developers on Windows prefer to use GUI tools like TortoiseSVN to
command line tools for version control.

(snip)

Are there suitable GUI tools for git on Windows for projects as
complex as LLVM? I believe MSVC has some integration, but I've not
used it before. Perhaps other tools exist that match the integration
and stability that TortoiseSVN has with Explorer?

Eclipse has a git plugin (included by default in "Eclipse IDE for C++
developers"), although using Eclipse only for git operations seems a
bit heavy.

I haven't used it for anything beyond "git pull".

Csaba

FYI, GitHub recently (last month or two?) added support to autosquash when merging a pull request, so you don’t have to do it manually anymore.

-Chris