GitForWindows vs. Cygwin

classic Classic list List threaded Threaded
16 messages Options
Reply | Threaded
Open this post in threaded view
|

GitForWindows vs. Cygwin

KARL BOTTS

Can anyone enlighten me about the relationship of "Git for Windows" to
Cygwin?

I have no intention to use GFW myself: I use Cygwin git.  But now other people
around here are discovering GitHub, MSysGit and or GitForWindows.  Pretty
soon, we are going to wind up with multiple git flavors installed on the same
host, which worries me.

I know that MSysGit is basically a stale fork of Cygwin.  I tried it a long
time ago (during a period when the git in Cygwin was not getting updated
often), and it caused me trouble.  As I recall, the bash in it was only v3,
and I was used to v4, and some of my scripts didn't run right, and MSysGit
messed up my HOME dir.  Anyhow, I got rid of MSysGit.  And now that the git in
Cygwin is keeping current, I am quite content.

But now I hear of this GitForWindows thing.  Which seems to have replaced
MSysGit, with a GUI thrown in.  But is it _still_ a stale fork of Cygwin, or a
fork at all?  Is it descended from MSysGit?  I have been googling all over,
but not finding good answers.

I just want to watch out for the damn thing, and try to keep it away...

---
Karl Botts, [hidden email]


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

Steven Penny
On Tue, 20 Mar 2018 17:52:24, "KARL BOTTS" wrote:
> Can anyone enlighten me about the relationship of "Git for Windows" to
> Cygwin?

As this is not the "Git for Windows" forum, your question would be better served
if you actually linked to what you are talking about.


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

Andrey Repin
In reply to this post by KARL BOTTS
Greetings, KARL BOTTS!


> Can anyone enlighten me about the relationship of "Git for Windows" to
> Cygwin?

They are not related.

> I have no intention to use GFW myself: I use Cygwin git.  But now other people
> around here are discovering GitHub, MSysGit and or GitForWindows.  Pretty
> soon, we are going to wind up with multiple git flavors installed on the same
> host, which worries me.

Erm, but how?

> But now I hear of this GitForWindows thing.  Which seems to have replaced
> MSysGit, with a GUI thrown in.  But is it _still_ a stale fork of Cygwin, or a
> fork at all?  Is it descended from MSysGit?  I have been googling all over,
> but not finding good answers.

You'd have better chance for the answers at their support channels.


--
With best regards,
Andrey Repin
Wednesday, March 21, 2018 02:40:11

Sorry for my terrible english...


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

Tony Kelman-2
>> Can anyone enlighten me about the relationship of "Git for Windows" to
>> Cygwin?
>
> They are not related.

Yes, they are.

>> But now I hear of this GitForWindows thing.  Which seems to have replaced
>> MSysGit, with a GUI thrown in.  But is it _still_ a stale fork of Cygwin, or a
>> fork at all?  Is it descended from MSysGit?  I have been googling all over,
>> but not finding good answers.

GitForWindows 2.x is based on MSYS2, which doesn't share any non-cygwin
code with the old MSYS1 as far as I'm aware, but it reimplements (on
top of a much more up-to-date fork of cygwin) the path-mangling trick
that was the main motivating factor for using MSYS1 in the first place.
When you have a non-cygwin windows executable (one compiled by mingw.org,
or mingw-w64, or MSVC compilers) and try to pass it a posix/cygwin-style
absolute path, the windows executable won't usually recognize it as a
file that exists. What the MSYS shell does is apply a heuristic that
automatically translates posix-style absolute paths to Windows paths
(similar to manually calling `cygpath -w /posix/style/path` on each
argument within cygwin) before passing the argument to the executable.
There are other differences between MSYS2 and Cygwin, mostly that it
uses a different package manager and repository, but these are less
significant with respect to GitForWindows' requirements.

The git.exe in Cygwin's git package is a cygwin executable compiled
by cygwin's gcc. Hence it understands posix-style paths just fine,
but it depends on cygwin1.dll to do so, and may not perform as well as
a non-cygwin Windows executable. (Maybe someone has benchmarked this.)

GitForWindows has historically been compiled using mingw gcc -
the legacy and now-mostly-obsolete mingw.org in the git 1.x timeframe
(this is the reason there was not a 64 bit version of git.exe through
that release channel at the time), and more recently the mingw-w64
compilers for git 2.x. Many of your questions are answered at
https://github.com/git-for-windows/git/wiki/FAQ#what-is-the-relationship-between-git-for-windows-and-msysgit
https://github.com/git-for-windows/build-extra#components-of-the-git-for-windows-sdk
https://www.msys2.org

Some components used by git (any shell scripts, for example) require
some form of posix compatibility layer to function. The recent MinGit
has a busybox-based variant that can mostly avoid MSYS2 dependencies,
though it seems to have at least some small MSYS2 pieces remaining:
https://github.com/git-for-windows/git/wiki/MinGit#experimental-busybox-based-mingit

You can see exactly how the MSYS2 runtime used by GitForWindows differs
from the version used by the MSYS2 project itself by looking at the
git repo at https://github.com/git-for-windows/msys2-runtime/commits/master
and how MSYS2 differs from upstream cygwin by looking at the repos at
https://github.com/Alexpux/Cygwin/commits/msys2-master
https://github.com/mirror/newlib-cygwin/commits/master
https://github.com/mirror/newlib-cygwin/releases

These "patch sets" tend to get rebased pretty frequently when new
cygwin releases come out upstream.

I dunno where else this history has been written down, but this is
my understanding of the development heritage. Any git and/or MSYS2
maintainers can correct me if anything I stated here is incorrect.

-Tony

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

Vince Rice
> On Mar 20, 2018, at 7:24 PM, Tony Kelman <[hidden email]> wrote:
>
>>> Can anyone enlighten me about the relationship of "Git for Windows" to
>>> Cygwin?
>>
>> They are not related.
>
> Yes, they are.

No they're not.

It doesn't use cygwin, therefore it's not related. Since this is a cygwin mailing list,
that means the first two replies were correct — this isn't the place to discuss it.
--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

Frank Fesevur
In reply to this post by KARL BOTTS
2018-03-20 23:52 GMT+01:00 KARL BOTTS:
> Can anyone enlighten me about the relationship of "Git for Windows" to
> Cygwin?

Depends on how you define "relationship". Tony summed it up very nicely.

> I have no intention to use GFW myself: I use Cygwin git.  But now other people
> around here are discovering GitHub, MSysGit and or GitForWindows.  Pretty
> soon, we are going to wind up with multiple git flavors installed on the same
> host, which worries me.

I use the Cygwin based git tools (tig most of the time) as my main
client, but also use Git for Windows and its tig, WSL based and real
Ubuntu, the builtin git client in Visual Studio and VSCode. I often
combine them in one project, for instance use VS for the simple and
easy commit, use the Cygwin command line for more advance stuff and to
push and pull (because I mainly use SSH).

The **real caveat** is to get your line endings right. You need that
figured out in any multi platform environment, and combining Windows
bases git and Cygwin based git is exactly that. Cygwin and Ubuntu
default to LF. Git for Windows and the VS clients default to CRLF.

We use "git config --global core.autocrlf false" and combine that with
a proper .gitattributes and .editorconfig file. So far that works
quite well for us.

Hope it helps,
Frank

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

Thomas Wolff
In reply to this post by Vince Rice
On 21.03.2018 05:02, Vince Rice wrote:
>> On Mar 20, 2018, at 7:24 PM, Tony Kelman <[hidden email]> wrote:
>>>> Can anyone enlighten me about the relationship of "Git for Windows" to Cygwin?
>>> They are not related.
>> Yes, they are.
> No they're not.
Tony explained well how they are related; Git for Windows is compiled in
and packaged with MSYS2 which is forked from Cygwin.
>
> It doesn't use cygwin, therefore it's not related. Since this is a cygwin mailing list,
> that means the first two replies were correct — this isn't the place to discuss it.

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

cyg Simple
On 3/21/2018 4:49 AM, Thomas Wolff wrote:
> On 21.03.2018 05:02, Vince Rice wrote:
>>> On Mar 20, 2018, at 7:24 PM, Tony Kelman <[hidden email]> wrote:
>>>>> Can anyone enlighten me about the relationship of "Git for Windows"
>>>>> to Cygwin?
>>>> They are not related.
>>> Yes, they are.
>> No they're not.
> Tony explained well how they are related; Git for Windows is compiled in
> and packaged with MSYS2 which is forked from Cygwin.

Git for Windows AKA MSysGit is a native build of git using MSYS as the
shell support.  It is not related to Cygwin and the Cygwin git.  They
are different as the Cygwin git uses POSIX sematics throughout while the
native version doesn't do that.  Using Cygwin git alongside the native
git version will in the end bite you in the ass.  I know from experience
that this is the case.  I've screwed up more than one patch because of
using different git distributions of Cygwin versus native.

--
cyg Simple

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

Vince Rice
In reply to this post by Thomas Wolff
> On Mar 21, 2018, at 3:49 AM, Thomas Wolff wrote:
>
> On 21.03.2018 05:02, Vince Rice wrote:
>>> On Mar 20, 2018, at 7:24 PM, Tony Kelman wrote:
>>>>> Can anyone enlighten me about the relationship of "Git for Windows" to Cygwin?
>>>> They are not related.
>>> Yes, they are.
>> No they're not.
> Tony explained well how they are related; Git for Windows is compiled in and packaged with MSYS2 which is forked from Cygwin.

No, Tony explained how it's related to MSYS2. This isn't a MSYS2 mailing list.

>> It doesn't use cygwin, therefore it's not related. Since this is a cygwin mailing list,
>> that means the first two replies were correct — this isn't the place to discuss it.

Which means this still applies.

(And I just realized I quoted an email address last time. My apologies.)
--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

Tony Kelman-2
>>>>>> Can anyone enlighten me about the relationship of "Git for Windows" to Cygwin?
>>>>> They are not related.
>>>> Yes, they are.
>>> No they're not.
>> Tony explained well how they are related; Git for Windows is compiled in and packaged with MSYS2 which is forked from Cygwin.
>
> No, Tony explained how it's related to MSYS2. This isn't a MSYS2 mailing list.

Don't think they have one. Git for Windows does, and somewhere like
https://groups.google.com/forum/#!topic/git-for-windows/jtwpuGa5u_E
would have been a pretty good alternate place to ask this question.
But I also explained how MSYS2 is very closely related to Cygwin,
and pretending they are completely unrelated and have nothing to do
with one another is myopic and misleading. If "how are MSYS2 and
Cygwin related to one another" is a banned question on this list,
perhaps that should be written down somewhere.

>>> It doesn't use cygwin, therefore it's not related. Since this is a cygwin mailing list,
>>> that means the first two replies were correct — this isn't the place to discuss it.
>
> Which means this still applies.

When the vast majority of the code in the MSYS2 runtime is exactly
the same as the code in the Cygwin runtime, and Git for Windows uses
msys-2.0.dll in a number of places (which is essentially a renamed
copy of cygwin1.dll) the question was fair. Particularly given Cygwin
has its own git package, it's only natural to wonder how that differs
from Git for Windows, and how it differs from the probably lesser-
known msys2-git package (which is built in very nearly the same
configuration as the Cygwin git package, posix style).

-Tony

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

Tony Kelman-2
>> No, Tony explained how it's related to MSYS2. This isn't a MSYS2 mailing list.
>
> Don't think they have one.

Whoops, yes they do https://sourceforge.net/p/msys2/mailman/msys2-users/

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

Brian Inglis
In reply to this post by Tony Kelman-2
On 2018-03-21 11:26, Tony Kelman wrote:

>>>>>>> Can anyone enlighten me about the relationship of "Git for Windows" to Cygwin?
>>>>>> They are not related.
>>>>> Yes, they are.
>>>> No they're not.
>>> Tony explained well how they are related; Git for Windows is compiled in
>>> and packaged with MSYS2 which is forked from Cygwin.
>>
>> No, Tony explained how it's related to MSYS2. This isn't a MSYS2 mailing list.
>
> Don't think they have one. Git for Windows does, and somewhere like
> https://groups.google.com/forum/#!topic/git-for-windows/jtwpuGa5u_E
> would have been a pretty good alternate place to ask this question.
> But I also explained how MSYS2 is very closely related to Cygwin,
> and pretending they are completely unrelated and have nothing to do
> with one another is myopic and misleading. If "how are MSYS2 and
> Cygwin related to one another" is a banned question on this list,
> perhaps that should be written down somewhere.
>
>>>> It doesn't use cygwin, therefore it's not related. Since this is a
>>>> cygwin mailing list, that means the first two replies were correct —
>>>> this isn't the place to discuss it.

>> Which means this still applies.
>
> When the vast majority of the code in the MSYS2 runtime is exactly
> the same as the code in the Cygwin runtime, and Git for Windows uses
> msys-2.0.dll in a number of places (which is essentially a renamed
> copy of cygwin1.dll) the question was fair. Particularly given Cygwin
> has its own git package, it's only natural to wonder how that differs
> from Git for Windows, and how it differs from the probably lesser-
> known msys2-git package (which is built in very nearly the same
> configuration as the Cygwin git package, posix style).

Only GfW and Msys2 Git projects can answer how Cygwin components are used by
their projects. Most (all?) of Cygwin winsup and (all of?) newlib are available
under permissive BSD(-style) licences that allow all uses of the code.

It's possible that the developers of those GfW and Msys2 Git packages have moved
on from those projects and the current maintainers don't have the basis to answer.

One might expect some of those maintainers to be subscribed to this list and
able to answer, but they may not, and just check web archives, or they may
choose not to get into this discussion here, although they could perhaps suggest
a more appropriate forum, or take the discussion off-list.

--
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

Achim Gratz
In reply to this post by KARL BOTTS
KARL BOTTS writes:
> I have no intention to use GFW myself: I use Cygwin git.  But now other people
> around here are discovering GitHub, MSysGit and or GitForWindows.  Pretty
> soon, we are going to wind up with multiple git flavors installed on the same
> host, which worries me.

As long as you keep the program versions reasonably up-to-date
w.r.t. each other and have a strict policy about CRLF handling in place
things should work OK.  You also need to worry more about having
sensible ACL on the repositories and keeping them sane.  Mixing these
two (POSIX vs. Windows way of things) does give you more rope to
entangle yourself in, so you need to know what you're doing when you
veer off the well-trodden path.  It helps to test a few things on
something easily discardable before you have a go at production repos.


Regards,
Achim.
--
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Factory and User Sound Singles for Waldorf Q+, Q and microQ:
http://Synth.Stromeko.net/Downloads.html#WaldorfSounds

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

Dan Kegel-2
On Wed, Mar 21, 2018 at 11:40 AM, Achim Gratz <[hidden email]> wrote:

> KARL BOTTS writes:
>> I have no intention to use GFW myself: I use Cygwin git.  But now other people
>> around here are discovering GitHub, MSysGit and or GitForWindows.  Pretty
>> soon, we are going to wind up with multiple git flavors installed on the same
>> host, which worries me.
>
> As long as you keep the program versions reasonably up-to-date
> w.r.t. each other and have a strict policy about CRLF handling in place
> things should work OK.  You also need to worry more about having
> sensible ACL on the repositories and keeping them sane.

I may be exploring that in the near future; one of the things I
need to build is electron, and it needs git for windows installed.
- Dan

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

David Macek
In reply to this post by Brian Inglis
>>>>> It doesn't use cygwin, therefore it's not related. Since this is a
>>>>> cygwin mailing list, that means the first two replies were correct —
>>>>> this isn't the place to discuss it.

>> When the vast majority of the code in the MSYS2 runtime is exactly
>> the same as the code in the Cygwin runtime, and Git for Windows uses
>> msys-2.0.dll in a number of places (which is essentially a renamed
>> copy of cygwin1.dll) the question was fair. Particularly given Cygwin
>> has its own git package, it's only natural to wonder how that differs
>> from Git for Windows, and how it differs from the probably lesser-
>> known msys2-git package (which is built in very nearly the same
>> configuration as the Cygwin git package, posix style).

> Only GfW and Msys2 Git projects can answer how Cygwin components are used by
> their projects. Most (all?) of Cygwin winsup and (all of?) newlib are available
> under permissive BSD(-style) licences that allow all uses of the code.
>
> It's possible that the developers of those GfW and Msys2 Git packages have moved
> on from those projects and the current maintainers don't have the basis to answer.
>
> One might expect some of those maintainers to be subscribed to this list and
> able to answer, but they may not, and just check web archives, or they may
> choose not to get into this discussion here, although they could perhaps suggest
> a more appropriate forum, or take the discussion off-list.
I've been watching this thread closely, but I had decided not to post since it
seemed like this discussion is unwanted by a part of the community.

On the surface, this discussion is about Git, so the most on-topic place to discuss
is the Git public mailing list.  I personally don't think the Cygwin mailing list
is off-topic.  Because most(all?) Windows Git distros use Cygwin code, it might be
even more useful to ask here (though I assume Johannes subscribes to Git ML and
he would be able to answer all the intricacies pretty accurately).

So far, Tony Kelman's descriptions were pretty spot on (that's why I didn't respond
to his call for corrections -- I couldn't think of any).

--
David Macek


smime.p7s (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: GitForWindows vs. Cygwin

R0b0t1
In reply to this post by KARL BOTTS
Hello list, I think there is information the OP can use, but no one
has apparently experienced it. Also, it's not likely he'd have gotten
good information from the other respective mailing lists, so I think
it is fine he asked here.

However, I am not very smart and my opinion does not matter, so I
apologize for the noise on the list.

On Tue, Mar 20, 2018 at 5:52 PM, KARL BOTTS <[hidden email]> wrote:

>
> Can anyone enlighten me about the relationship of "Git for Windows" to
> Cygwin?
>
> I have no intention to use GFW myself: I use Cygwin git.  But now other people
> around here are discovering GitHub, MSysGit and or GitForWindows.  Pretty
> soon, we are going to wind up with multiple git flavors installed on the same
> host, which worries me.
>
> I know that MSysGit is basically a stale fork of Cygwin.  I tried it a long
> time ago (during a period when the git in Cygwin was not getting updated
> often), and it caused me trouble.  As I recall, the bash in it was only v3,
> and I was used to v4, and some of my scripts didn't run right, and MSysGit
> messed up my HOME dir.  Anyhow, I got rid of MSysGit.  And now that the git in
> Cygwin is keeping current, I am quite content.
>
> But now I hear of this GitForWindows thing.  Which seems to have replaced
> MSysGit, with a GUI thrown in.  But is it _still_ a stale fork of Cygwin, or a
> fork at all?  Is it descended from MSysGit?  I have been googling all over,
> but not finding good answers.
>
> I just want to watch out for the damn thing, and try to keep it away...
>

What you need to watch out for is having a cluttered PATH. If you
install, say, the WinAVR toolchain, it includes either an MSYS
distribution or select pieces of Cygwin (bundling MSYS[2] is more
popular, from memory). These old tools will cause problems if you try
to run autotools for a native project from within Cygwin. Other
distributions, like the Haskell Stack, have the same problem.

If you install MSYS2 and Cygwin and both are in your path but you keep
both up to date, you won't have this problem.

Cheers,
     R0b0t1

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple