WinGit 0.1 (alpha)

6 views
Skip to first unread message

Johannes Schindelin

unread,
Sep 7, 2007, 2:46:18 PM9/7/07
to msysGit
Hi guys,

I just uploaded my first attempt at WinGit to our GoogleCode download
page. It is relatively sleak (could be smaller, though, should we decide
to put in the work to leave out unneeded Perl and Tcl packages; much work
though). 6.4MB.

At the moment it only installs a link on the desktop, the quick launch and
a start menu item (it asks before doing that). This link will launch a
cmd with the shell fully initialised.

I know that some of you guys think that shell is not the way to go; I
strongly suggest, however, to point people not willing to use the shell to
git-gui (instead of cmd). Remember, many helpers will tell helpees to
script this and that, and you have to have a shell for that.

The general direction I would like to see this going:

- Add a shortcut to git-gui (git-gui needs to learn to cd to an existing
git repo itself, first).

- Since this is 7-Zip based, I have no clue what needs to be done to put
the installed files into the Add/Remove Software thing Windows has.

- Git-Cheetah will be integrated (there is already a branch which includes
cheetah as a submodule). This should please many users who know
TortoiseCVS already.

I'd also like your opinions on Open Source merge/diff tools we could
include.

Oh, and you can regenerate the installer by saying
"/share/WinGit/release.sh <version>" yourself.

Have fun,
Dscho

Johannes Sixt

unread,
Sep 7, 2007, 5:57:52 PM9/7/07
to msysGit, Johannes....@gmx.de
On Friday 07 September 2007 20:46, Johannes Schindelin wrote:
> Hi guys,
>
> I just uploaded my first attempt at WinGit to our GoogleCode download
> page. It is relatively sleak (could be smaller, though, should we decide
> to put in the work to leave out unneeded Perl and Tcl packages; much work
> though). 6.4MB.

This is great news. Thanks a lot for your efforts!

> I'd also like your opinions on Open Source merge/diff tools we could
> include.

I've used WinMerge (http://winmerge.org/) in the past and liked it a lot. But
despite its name it offers only 2-way diff.

-- Hannes

dky

unread,
Sep 7, 2007, 10:57:06 PM9/7/07
to msysGit
Hi,

Johannes Schindelin wrote:
> I'd also like your opinions on Open Source merge/diff tools we could
> include.

I use Kdiff3 on M$ as it is available on GNU/Linux too. I like to get
used to a common tool even if there is a better tool which is not well
ported. There are enough things to learn than learning the
idiosyncrasies of platform specific tools.

There is another tool written in PYTHON which does a diff/patch/merge
but is still in a library format.
http://code.google.com/p/google-diff-match-patch/

We could explore using it.

-dky

Dmitry Kakurin

unread,
Sep 8, 2007, 2:01:56 AM9/8/07
to Johannes....@gmx.de, msysGit
----- Original Message -----
From: "Johannes Schindelin" <Johannes....@gmx.de>
> Hi guys,
>
> I just uploaded my first attempt at WinGit to our GoogleCode download
> page. It is relatively sleak (could be smaller, though, should we decide
> to put in the work to leave out unneeded Perl and Tcl packages; much work
> though). 6.4MB.

Cool!

> I know that some of you guys think that shell is not the way to go

Well, yes.
Here is what I do:
I have a git.cmd like this in my PATH:
====
@set path=C:\GitDev\bin;C:\GitDev\mingw\bin
@set home=%HOMEDRIVE%%HOMEPATH%
@git.exe %*
====
and I can do pretty much everything with Git from cmd that I can do from sh.
Note that even Windows dirs are not in PATH.
I did the same for Gitk with gitk.cmd.

First I've tried to add /bin and /mingw/bin to my PATH but it didn't work
well:
* If I add it to the end of the PATH then some Windows tools like sort were
called, and things got broken for Git
* If I add it to the beginning of the PATH then some of my Windows tools got
broken because they've started using utils from MSys

So I came up with this trivial .cmd wrapper and I'm pretty happy with it.
I think we can do the same for WinGit.

- Dmitry

Johannes Schindelin

unread,
Sep 8, 2007, 7:22:41 PM9/8/07
to dky, msysGit
Hi,

On Sat, 8 Sep 2007, dky wrote:

>
> Hi,
>
> Johannes Schindelin wrote:
> > I'd also like your opinions on Open Source merge/diff tools we could
> > include.
>
> I use Kdiff3 on M$ as it is available on GNU/Linux too. I like to get
> used to a common tool even if there is a better tool which is not well
> ported. There are enough things to learn than learning the
> idiosyncrasies of platform specific tools.

That's a nice idea. How heavy is it on dependencies, though? Does it
need KDE, Qt, etc.?

> There is another tool written in PYTHON which does a diff/patch/merge
> but is still in a library format.
> http://code.google.com/p/google-diff-match-patch/

Unfortunately, this would draw in yet another dependency. I am not quite
ready for that, since the WinGit installer already weighs in with a couple
of megabytes (due to _both_ Perl and Tcl coming with a quite hefty set of
packages, taking up space like mad).

So I am opposed to that, sorry.

Ciao,
Dscho

Johannes Schindelin

unread,
Sep 8, 2007, 7:28:12 PM9/8/07
to Dmitry Kakurin, msysGit
Hi,

On Fri, 7 Sep 2007, Dmitry Kakurin wrote:

> ----- Original Message ----- From: "Johannes Schindelin"
> <Johannes....@gmx.de>
>

> > I just uploaded my first attempt at WinGit to our GoogleCode download
> > page. It is relatively sleak (could be smaller, though, should we
> > decide to put in the work to leave out unneeded Perl and Tcl packages;
> > much work though). 6.4MB.
>
> Cool!

Thanks!

> > I know that some of you guys think that shell is not the way to go
>
> Well, yes.
> Here is what I do:
> I have a git.cmd like this in my PATH:
> ====
> @set path=C:\GitDev\bin;C:\GitDev\mingw\bin
> @set home=%HOMEDRIVE%%HOMEPATH%
> @git.exe %*
> ====
> and I can do pretty much everything with Git from cmd that I can do from sh.

We still might do that.

However, I have the uninformed feeling that many new Git users will come
to the git list, asking for this and that. "How do I...". Probably some
kind soul says for some of these problems "ATM core-git has no porcelain
for it, but you could [adds short script]".

One of the _strengths_ of Git is its easy scriptability. Let's not take
that away from potential users, at least for now.

Ciao,
Dscho

dhruva

unread,
Sep 8, 2007, 11:36:26 PM9/8/07
to Johannes Schindelin, msysGit
Hi,

On 9/9/07, Johannes Schindelin <Johannes....@gmx.de> wrote:
> > I use Kdiff3 on M$ as it is available on GNU/Linux too. I like to get

> That's a nice idea. How heavy is it on dependencies, though? Does it
> need KDE, Qt, etc.?
>

Installed size on disk is a whooping 17.4Mb. The installer size is
7.5Mb. I have tried almost all the available free versions of
diff/merge tools and Kdiff3 is the best in handling merge. I was
working on the SAMBA porting on VMS (operating system) and was in
charge of merging HEAD with our VMS port branch. I was able to merge
rather scattered changes in under 45mins. It was mainly due to Kdiff3
and its intuitive layout.

I am personally against using WinMerge as it does not support hiding
changes to white space and empty lines. A small change in indentation
(cleanup which I usually do as part of my editing) results in the
complete file flagged as changed.

There are other JAVA variants which I have tried but not made them my
default. I am trying to use the TortoiseMerge but not able to download
yet (some link problem). Will post once I do that.

-dky

--
Dhruva Krishnamurthy
Contents reflect my personal views only!

Dmitry Kakurin

unread,
Sep 9, 2007, 4:24:03 AM9/9/07
to Johannes Schindelin, msysGit

These 2 approaches are not mutually exclusive BTW.
You want git from your current cmd shell - you use .cmd wrappers that I've
mentioned.
You want to run some sh script - you click on "Git Shell" link and play from
there.

- Dmitry

Johannes Schindelin

unread,
Sep 9, 2007, 11:29:17 AM9/9/07
to Dmitry Kakurin, msysGit
Hi,

On Sun, 9 Sep 2007, Dmitry Kakurin wrote:

> ----- Original Message ----- From: "Johannes Schindelin"
> <Johannes....@gmx.de>
> > > Well, yes.
> > > Here is what I do:
> > > I have a git.cmd like this in my PATH:
> > > ====
> > > @set path=C:\GitDev\bin;C:\GitDev\mingw\bin
> > > @set home=%HOMEDRIVE%%HOMEPATH%
> > > @git.exe %*
> > > ====
> > > and I can do pretty much everything with Git from cmd that I can do from
> > > sh.
> >
> > We still might do that.
> >
> > However, I have the uninformed feeling that many new Git users will come
> > to the git list, asking for this and that. "How do I...". Probably some
> > kind soul says for some of these problems "ATM core-git has no porcelain
> > for it, but you could [adds short script]".
> >
> > One of the _strengths_ of Git is its easy scriptability. Let's not take
> > that away from potential users, at least for now.
>
> These 2 approaches are not mutually exclusive BTW.

Right. However, I am still not convinced that advertising the non-bash
method so prominently. Yeah, for people who want to have it, sure. But
IMHO new users should use the recommended way.

> You want git from your current cmd shell - you use .cmd wrappers that I've
> mentioned.
> You want to run some sh script - you click on "Git Shell" link and play from
> there.

That's actually a good idea to rename the "Git" link to "Git Shell".

Ciao,
Dscho

Johannes Schindelin

unread,
Sep 9, 2007, 11:32:47 AM9/9/07
to dhruva, msysGit
Hi,

On Sun, 9 Sep 2007, dhruva wrote:

> On 9/9/07, Johannes Schindelin <Johannes....@gmx.de> wrote:
> > > I use Kdiff3 on M$ as it is available on GNU/Linux too.
>

> > That's a nice idea. How heavy is it on dependencies, though? Does it
> > need KDE, Qt, etc.?
>
> Installed size on disk is a whooping 17.4Mb. The installer size is
> 7.5Mb.

Rather hefty, no?

> There are other JAVA variants which I have tried but not made them my
> default.

Java is also a rather hefty dependency (and we already have a proper
language in Git, C, and depend on shell, Perl and Tcl/Tk, too, so adding
yet another language -- even Python -- is something that I am completely
opposed to).

> I am trying to use the TortoiseMerge but not able to download yet (some
> link problem). Will post once I do that.

That sounds like a good option!

Ciao,
Dscho

Torgil Svensson

unread,
Sep 9, 2007, 3:19:41 PM9/9/07
to Johannes....@gmx.de, dky, msysGit
On 9/9/07, Johannes Schindelin <Johannes....@gmx.de> wrote:

> > There is another tool written in PYTHON which does a diff/patch/merge
> > but is still in a library format.
> > http://code.google.com/p/google-diff-match-patch/
>
> Unfortunately, this would draw in yet another dependency. I am not quite
> ready for that, since the WinGit installer already weighs in with a couple
> of megabytes (due to _both_ Perl and Tcl coming with a quite hefty set of
> packages, taking up space like mad).
>
> So I am opposed to that, sorry.

Python is very easy to install on windows from the _official_ python
site. Why not let people install this if they want the extra features
and make a sh-wrapper for /bin/python as I suggested for perl in
another thread.

//Torgil

Dmitry Kakurin

unread,
Sep 9, 2007, 5:24:05 PM9/9/07
to Johannes Schindelin, msysGit
----- Original Message -----
> IMHO new users should use the recommended way.

IMHO user should use whatever they prefer after considering advantages and
limitations of each approach.
Our goal is to *educate* users about these advantages and limitations.

- Dmitry

Johannes Schindelin

unread,
Sep 9, 2007, 7:16:49 PM9/9/07
to Torgil Svensson, dky, msysGit
Hi,

IMHO the advantages of one single installer outweigh the advantages of an
installer with plenty of features which you can magically activate by
installing yet another package.

Ciao,
Dscho

Kenneth Dalgleish

unread,
Sep 11, 2007, 8:00:08 PM9/11/07
to msysGit

On 7 Sep, 20:46, Johannes Schindelin <Johannes.Schinde...@gmx.de>
wrote:

Very sleak indeed. Probably a newbie question, but how do you build so
small binaries? E.g. git.exe in your build is only short of 700k. When
I build, my git.exe is 2700k.

- Kenneth

Johannes Schindelin

unread,
Sep 12, 2007, 3:11:38 AM9/12/07
to Kenneth Dalgleish, msysGit
Hi,

On Wed, 12 Sep 2007, Kenneth Dalgleish wrote:

> Probably a newbie question, but how do you build so small binaries? E.g.
> git.exe in your build is only short of 700k. When I build, my git.exe is
> 2700k.

You run "strip <executable>". This removes unnecessary cruft from the
executables, as well as debugging information.

See line 30 of /share/WinGit/release.sh.

Hth,
Dscho

ch...@gmx.de

unread,
Sep 12, 2007, 6:56:20 AM9/12/07
to msysGit
Hello I tried WinGit-0.1-alpha.exe on a win-xp system.

I have very little rights here (can not write in programs folder,
can't delete certain desktop icons, can't open calender from the tray
icon because I am not allowed to change the time (is microsoft that
stupid or just lazy?),...). As far as I can overview it, this does not
limit WinGit, but I am not completely sure, so the problems I have may
be related to this.

I decompressed the content to:
C:\Dokumente und Einstellungen\[username which contains a ü]\Eigene
Dateien\WinGit\
Certain things does not work. A lot of commands (for example: git
diff, git log) fail with the error message 'sh: less: command not
found'. This stopped after I realised that I can create directories in
C:\ and copied WinGit to C:\WinGit\. So there seems to be either a
problem with spaces in the pathname , or with chars like äöü.

But even after this copying the prompt in MINGW32 is wrong. The 'ü' in
my username is replaced by an '?', but this is probably minor optical
stuff.
(I get something like '[username which contains a ?]@pcname /' )

The other problem is, that gitk works, but git-gui fails with this
errormessage: 'couldn't open "C:/WinGit/share/git-gui/lib/tclIndex":
no such file or directory'. Such a file seems to be in C:/WinGit/lib/
tcl8.4

I only want to use git for a local history here, so I don't tested
commands like push, fetch,...

I hope this helps to hunt down some bugs.

Kirill

unread,
Sep 12, 2007, 1:42:42 PM9/12/07
to msysGit
Hello everybody,

At first, Johannes, thank you so much!
I've been using a binary distribution from lilypond for sometime now
and was hoping that somebody with more experience than me (mine is
~1.5 weeks) could bring msysGit to the next level of usability. And
you did it! Thanks!

> - Since this is 7-Zip based, I have no clue what needs to be done to put
> the installed files into the Add/Remove Software thing Windows has.

You need to create some registry entries.
The following, saved as .reg file and opened as part of the
installation, will create necessary entries if WinGit is installed for
everyone on the machine:
*** uninstall.reg ***
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
\WinGit]
"UninstallString"="C:\\installation\\dir\\uninstall-app.exe"
"DisplayName"="WinGit"

*** end of uninstall.reg ***

If WinGit is installed only for the current user, you'd need
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall
\WinGit]
instead. If you can't decide, put the uninstall info into the
HKEY_CURRENT_USER only (and only that user will be able to see it in
Add/Remove Programs).

You can also add some optional items to look like a serious company
and have Click here for support information (available in Windows
2000+), for example:
"Comments"="never saw anything more incredible"
"Contact"="Support Contact Name, e.g. company name"
"DisplayVersion"="0.1-alpha"
"HelpTelephone"="Your phone number"
"InstallDate"="20070418"
"InstallLocation"="C:\\Program Files\\WinGit"
"Publisher"="Usually company name"
"Readme"="C:\\path\\to\\readme.file"
"URLInfoAbout"="http://link.for.Publisher"
"URLUpdateInfo"="http://link.for.product.updates"
"HelpLink"=hex(2):68,74,74,70,3a,2f,2f,6c,69,6e,6b,2e,74,6f,2e,73,\
75,70,70,6f,72,74,00
"EstimatedSize"=dword:00015705
"Language"=dword:00000409
"Version"=dword:08010000
"VersionMajor"=dword:00000008
"VersionMinor"=dword:00000001
"DisplayIcon"="C:\\path\\to\\icon\\ARPPRODUCTICON.exe"

The above info is accurate as of Win XP (Vista may be different).

On Sep 12, 6:56 am, ch...@gmx.de wrote:

> can't delete certain desktop icons, can't open calender from the tray
> icon because I am not allowed to change the time (is microsoft that
> stupid or just lazy?)

No, they just want you to spend few more dollars and purchase
Outlook :)

> Certain things does not work. A lot of commands (for example: git
> diff, git log) fail with the error message 'sh: less: command not
> found'. This stopped after I realised that I can create directories in
> C:\ and copied WinGit to C:\WinGit\. So there seems to be either a
> problem with spaces in the pathname , or with chars like äöü.

I'd bet on local chars, given that the default installation goes to
"Program Files".

> The other problem is, that gitk works, but git-gui fails with this
> errormessage: 'couldn't open "C:/WinGit/share/git-gui/lib/tclIndex":
> no such file or directory'. Such a file seems to be in C:/WinGit/lib/
> tcl8.4

I second this. Moreover, it seems the problem is related to the line
git-gui:602
set oguilib [file join $oguilib share git-gui lib]

However, there are two tclIndex files - one in tcl8.4 and the one in
tk8.4. And when I changed the above line to point to either of them,
the error message changes to

---------------------------
Error in startup script
---------------------------
invalid command name "::status_bar::new"
while executing
"::status_bar::new .status"
invoked from within
"set main_status [::status_bar::new .status]"
(file "C:/tools/git/bin/git-gui" line 2466)
---------------------------
OK
---------------------------

Note: I installed WinGit into c:\tools\git.

Hopefully, we can have 1.5.3 running semi-natively on Windows soon.

--
Kirill.

Mike Pape

unread,
Sep 12, 2007, 2:16:26 PM9/12/07
to Johannes Schindelin, kirill...@gmail.com, msysGit
> > The other problem is, that gitk works, but git-gui fails with this
> > errormessage: 'couldn't open "C:/WinGit/share/git-gui/lib/tclIndex":
> > no such file or directory'. Such a file seems to be in C:/WinGit/lib/
> > tcl8.4
> I second this. Moreover, it seems the problem is related to the line
> git-gui:602
> set oguilib [file join $oguilib share git-gui lib]

Dscho, I committed a change to the devel branch of 4msysgit that I
think fixes this. Let me know if it tests out ok for you too.

Kirill Alexandrov

unread,
Sep 12, 2007, 11:07:16 PM9/12/07
to msy...@googlegroups.com
Mike,

either I'm so used to gui that I can't use command line any more or I
was so sure that the fix is supposed to be somewhere in git-gui that I
don't believe my eyes.

The only difference between master and devel is in convert.c and is
about eof. Is it the change you're talking about?

Thank you!

--
Kirill.

Mike Pape

unread,
Sep 13, 2007, 7:48:34 AM9/13/07
to kirill...@gmail.com, msy...@googlegroups.com
> Mike,
>
> either I'm so used to gui that I can't use command line any more or I
> was so sure that the fix is supposed to be somewhere in git-gui that I
> don't believe my eyes.
>
> The only difference between master and devel is in convert.c and is
> about eof. Is it the change you're talking about?
>
> Thank you!
>
> --
> Kirill.

No I'm talking about a different repository than you I think. I've
actually reverted the change because I don't think it will fix your
issue. We'll keep looking into it though.

Johannes Schindelin

unread,
Sep 22, 2007, 10:30:09 PM9/22/07
to Kirill, msysGit
Hi,

On Wed, 12 Sep 2007, Kirill wrote:

> > - Since this is 7-Zip based, I have no clue what needs to be done to put
> > the installed files into the Add/Remove Software thing Windows has.
> You need to create some registry entries.
> The following, saved as .reg file and opened as part of the
> installation, will create necessary entries if WinGit is installed for
> everyone on the machine:
> *** uninstall.reg ***
> REGEDIT4
>
> [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
> \WinGit]
> "UninstallString"="C:\\installation\\dir\\uninstall-app.exe"
> "DisplayName"="WinGit"
>
> *** end of uninstall.reg ***

> [...]

Thanks for your explanations! I have included this in msysgit.git;
WinGit-0.3 will have it.

Ciao,
Dscho

Johannes Schindelin

unread,
Sep 22, 2007, 10:41:45 PM9/22/07
to ch...@gmx.de, msysGit
Hi,

On Wed, 12 Sep 2007, ch...@gmx.de wrote:

> I decompressed the content to:

> C:\Dokumente und Einstellungen\[username which contains a ?]\Eigene


> Dateien\WinGit\
> Certain things does not work. A lot of commands (for example: git
> diff, git log) fail with the error message 'sh: less: command not
> found'. This stopped after I realised that I can create directories in
> C:\ and copied WinGit to C:\WinGit\. So there seems to be either a

> problem with spaces in the pathname , or with chars like ???.

I guess it is the space.

> But even after this copying the prompt in MINGW32 is wrong. The '?' in


> my username is replaced by an '?', but this is probably minor optical
> stuff.
> (I get something like '[username which contains a ?]@pcname /' )

Somehow my mailer did not get your special chars; besides, I do not know
how to fix it. Might be an encoding problem, no?

> The other problem is, that gitk works, but git-gui fails with this
> errormessage: 'couldn't open "C:/WinGit/share/git-gui/lib/tclIndex":
> no such file or directory'. Such a file seems to be in C:/WinGit/lib/
> tcl8.4

Ah yes. I forgot to include share/git-gui/ in the files to be installed.
This is fixed in msysgit.git (commit d4ef6412...), and will be in
WinGit-0.3.

Thanks,
Dscho

Johannes Schindelin

unread,
Sep 22, 2007, 11:00:59 PM9/22/07
to ch...@gmx.de, msysGit
Hi,

On Wed, 12 Sep 2007, ch...@gmx.de wrote:

> I decompressed the content to:

> C:\Dokumente und Einstellungen\[username which contains a ?]\Eigene


> Dateien\WinGit\
> Certain things does not work. A lot of commands (for example: git
> diff, git log) fail with the error message 'sh: less: command not
> found'. This stopped after I realised that I can create directories in
> C:\ and copied WinGit to C:\WinGit\. So there seems to be either a

> problem with spaces in the pathname , or with chars like ???.

Okay, I tried with msysGit, and it fails when there is a space in the
path of the installation, indeed, but already at the stage after the
installer.

I just fixed that in commit 297df86...

The rest was fine; I initialised a repository without any problem,
committed there, logged it...

But when I tried to remove it, there was a problem: the file "Märchen" was
not properly removed, and therefore "rm -rf" failed.

So it seems that the umlaut was the problem.

Since the issue is at the MSys level, I am afraid that it will take quite
some time to fix it. (I want to have WinGit functional first, before I
fix issues like these, which are not really Git problems.)

Ciao,
Dscho

Reply all
Reply to author
Forward
0 new messages