Commit Graph

22074 Commits

Author SHA1 Message Date
Erik Faye-Lund
c8a1530575 mingw: fix st_mode for symlink dirs
When encountering symlinks, do_lstat() currently overwrites
buf->st_mode with S_IFREG if follow is true. This is incorrect
when the symlink points to a directory.

get_file_attr calls GetFileAttributesExA, which follows symlinks
already. So our st_mode should already be correct at this point.

Tested-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
2010-04-08 20:30:35 +02:00
Erik Faye-Lund
acc5880a61 mingw: do not hide bare repositories
As reported in msysGit issue 450 the recent change to set the windows
hidden attribute on the .git directory is being applied to bare git
directories. This patch excludes bare repositories.

Tested-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
2010-04-08 20:30:35 +02:00
Pat Thoyts
fd73c0b9bc mingw: add tests for the hidden attribute on the git directory
With msysGit the .git directory is supposed to be hidden, unless it is
a bare git repository. Test this.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
2010-04-08 20:30:34 +02:00
Pat Thoyts
85e55a6565 Report errors when failing to launch the html browser in mingw.
The mingw function to launch the system html browser is silent if the
target file does not exist leaving the user confused. Make it display
something.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Reviewed-by: Erik Faye-Lund <kusmabite@gmail.com>
2010-04-08 20:30:34 +02:00
Pat Thoyts
62f864990a fix mingw stat() and lstat() implementations for handling symlinks
In msysGit the stat() function has been implemented using mingw_lstat
which sets the st_mode member to S_IFLNK when a symbolic links is found.
This causes the is_executable function to return when git attempts to
build a list of available commands in the help code and we end up missing
most git commands. (msysGit issue #445)

This patch modifies the implementation so that lstat() will return the link
flag but if we are called as stat() we read the size of the target and set
the mode to that of a regular file.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
2010-04-08 20:30:34 +02:00
Sebastian Schuberth
faeb863a7f gitk: Second try to work around the command line limit on Windows
The first fix caused Tcl to fail to compile the regexp, see msysGit issue
427. Here is another fix without using regexp, and using a more relaxed
command line length limit to fix the original issue 387.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
2010-04-08 20:30:33 +02:00
Johannes Schindelin
3b4f6cbfce gitk: work around ridiculous command line restriction on Windows
On Windows, there are dramatic problems when a command line grows
beyond PATH_MAX, which is restricted to 8191 characters on XP and
later (according to http://support.microsoft.com/kb/830473).

Work around this by just cutting off the command line at that length
(actually, at a space boundary) in the hope that only negative
refs are chucked: gitk will then do unnecessary work, but that is
still better than flashing the gitk window and exiting with exit
status 5 (which no Windows user is able to make sense of).

This fixes msysGit issue 387.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2010-04-08 20:30:33 +02:00
Pat Thoyts
493461349d git-gui: Avoid using the <<Copy>> binding as a menu accelerator on win32
On Windows the Control-C binding is used to copy and is mapped to the Tk
virtual event <<Copy>>. In the initial git-gui dialog this is also bound
as an accelerator for the Clone menu item. The effect is that both bindings
run, copying the text but resetting the clone page or switching to the clone
page when the user tries to copy text from one of the entry fields.
This patch avoids this by using Control-L instead for Windows only.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
2010-04-08 20:30:32 +02:00
Jens Lehmann
62cd93c1df gitk: Add shortcut Ctrl-W for closing the active window
To make the user experience between git gui and gitk more homogeneous, use
Ctrl-W in gitk too for closing the active window. When closing the main
window doquit is called for proper cleanup.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
2010-04-08 20:30:32 +02:00
Heiko Voigt
3876a4604a git-gui: provide question helper for retry fallback on Windows
Make use of the new environment variable GIT_ASK_YESNO to support the
recently implemented fallback in case unlink, rename or rmdir fail for
files in use on Windows. The added dialog will present a yes/no question
to the the user which will currently be used by the windows compat layer
to let the user retry a failed file operation.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
2010-04-08 20:30:31 +02:00
Heiko Voigt
9b275e71be mingw: add fallback for rmdir in case directory is in use
The same logic as for unlink and rename also applies to rmdir. For
example in case you have a shell open in a git controlled folder. This
will easily fail. So lets be nice for such cases as well.

Signed-off-by: Heiko Voigt <heiko.voigt@mahr.de>
2010-04-08 20:30:31 +02:00
Heiko Voigt
9da0cb5c86 mingw: make failures to unlink or move raise a question
On Windows in case a program is accessing a file unlink or
move operations may fail. To give the user a chance to correct
this we simply wait until the user asks us to retry or fail.

This is useful because of the following use case which seem
to happen rarely but when it does it is a mess:

After making some changes the user realizes that he was on the
incorrect branch. When trying to change the branch some file
is still in use by some other process and git stops in the
middle of changing branches. Now the user has lots of files
with changes mixed with his own. This is especially confusing
on repositories that contain lots of files.

Although the recent implementation of automatic retry makes
this scenario much more unlikely lets provide a fallback as
a last resort.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
2010-04-08 20:30:30 +02:00
Heiko Voigt
1de940e399 git-gui: fix shortcut creation on cygwin
When the user tried to create a desktop icon with git gui on cygwin
wscript was complaining about an unknown option and displaying the
non-native path as such.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2010-04-08 20:30:30 +02:00
Heiko Voigt
ea928bad86 git-gui: fix PATH environment for mingw development environment
When creating a desktop shortcut from the gui the shortcut directly
starts wish with the git-gui script. In the msysgit development
environment some dll's reside in the mingw/bin directory which causes
that git can not start because libiconv2.dll is not found.

When using such a link the error is even more cryptic stating:
"child killed: unknown signal"

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2010-04-08 20:30:29 +02:00
Heiko Voigt
4e3c3a570d git-gui: fix usage of _gitworktree when creating shortcut for windows
This fixes msysGit issue 425.

Signed-off-by: Heiko Voigt <heiko.voigt@mahr.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2010-04-08 20:30:29 +02:00
Markus Heidelberg
1c73b79894 git-gui: fix "Explore Working Copy" for Windows again
It has already been fixed in commit 454efb47 (git-gui (Win): make
"Explore Working Copy" more robust, 2009-04-01), but has been broken in
commit 21985a11 (git-gui: handle non-standard worktree locations,
2010-01-23) by accidentally replacing too much with a new variable.

The problem can be reproduced when starting git-gui from within a
subdirectory. The solution is to convert the path name, explorer.exe is
invoked with, to a platform native name.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
2010-04-08 20:30:28 +02:00
Heiko Voigt
f0849bf809 git-gui: check whether systems nice command works or disable it
This fixes issue 394 from msysgit. It seems that the Gnuwin32 project
provides a nice command but it returns a "not implemented" error. To
help users we now try to execute once and disable it in case it fails.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2010-04-08 20:30:28 +02:00
Heiko Voigt
2ec79df990 git-gui: fix usage of themed widgets variable
There was one forgotten global so NS was not visible to the method
which resulted in an error.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
2010-04-08 20:30:28 +02:00
Pat Thoyts
fae5dc25a7 Handle failure of core.worktree to identify the working directory.
Commit 21985a11 'git-gui: handle non-standard worktree locations' attempts
to use either GIT_WORK_TREE or core.worktree to set the _gitworktree
variable but these may not be set which leads to a failure to launch
gitk to review history. Use _gitdir to set the location for a standard
git layout where the parent of the .git directory is the working tree.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
2010-04-08 20:30:27 +02:00
Heiko Voigt
1de9be03d5 mingw: work around irregular failures of unlink on windows
If a file is opened by another process (e.g. indexing of an IDE) for
reading it is not allowed to be deleted. So in case unlink fails retry
after waiting for some time. This extends the workaround from 6ac6f878.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
2010-04-08 20:30:27 +02:00
Heiko Voigt
87635ed045 mingw: move unlink wrapper to mingw.c
The next patch implements a workaround in case unlink fails on Windows.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
2010-04-08 20:30:26 +02:00
Heiko Voigt
26c00eab4d Revert "git-gui: set GIT_DIR and GIT_WORK_TREE after setup"
This reverts commit a9fa11fe5b.
2010-04-08 20:30:26 +02:00
Pat Thoyts
67bb5597ea Skip t1300.70 and 71 on msysGit.
These two tests fail on msysGit because /dev/null is an alias for nul on
Windows and when reading the value back from git config the alias does
not match the real filename. Also the HOME environment variable has a
unix-style path but git returns a native equivalent path for '~'.  As
these are platform-dependent equivalent results it seems simplest to
skip the test entirely.

Signed-off-by: Pat Thoyts <patthoyts <at> users.sourceforge.net>
2010-04-08 20:30:25 +02:00
Johannes Sixt
27156a29cc criss cross rename failure workaround
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2010-04-08 20:30:25 +02:00
Johannes Schindelin
41bc9dba9f Revert "git am: accept patches downloaded from GMane"
This reverts commit 127aa63757.  As pointed
out by Junio, this patch was obsoleted by 0fcb2ca.
2010-04-08 20:30:24 +02:00
Johannes Schindelin
38ab60d7e5 When initializing .git/, record the current setting of core.hideDotFiles
This is on Windows only, of course.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2010-04-08 20:30:24 +02:00
Erik Faye-Lund
891b3d11b1 core.hidedotfiles: hide '.git' dir by default
At least for cross-platform projects, it makes sense to hide the
files starting with a dot, as this is the behavior on Unix/MacOSX.

However, at least Eclipse has problems interpreting the hidden flag
correctly, so the default is to hide only the .git/ directory.

The config setting core.hideDotFiles therefore supports not only
'true' and 'false', but also 'dotGitOnly'.

[jes: clarified the commit message, made git init respect the setting
by marking the .git/ directory only after reading the config, and added
documentation, and rebased on top of current junio/next]

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2010-04-08 20:30:23 +02:00
Sebastian Schuberth
7574d99881 MinGW: Add missing file mode bit defines
Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
2010-04-08 20:30:23 +02:00
Sebastian Schuberth
11bcc68dc9 MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility
Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
2010-04-08 20:30:23 +02:00
Johannes Schindelin
3998051fa3 Avoid TAGS/tags warning from GNU Make
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2010-04-08 20:30:22 +02:00
Johannes Schindelin
96cfcbb227 git am: accept patches downloaded from GMane
GMane has this wonderful feature that you can download the raw mails,
but the mails do not fully conform to the mbox format, as they do not
start with a "From ..." line.

But they start with another tell tale we can easily detect.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2010-04-08 20:30:22 +02:00
Junio C Hamano
8b27e1648d Merge branch 'master' into next
* master:
  fix typos and grammar in 1.7.1 draft release notes
2010-04-07 15:35:16 -07:00
Junio C Hamano
02125bcc41 Merge branch 'mg/notes-reflog'
* mg/notes-reflog:
  refs.c: Write reflogs for notes just like for branch heads
  t3301-notes: Test the creation of reflog entries
2010-04-07 15:34:09 -07:00
Junio C Hamano
d6b5af6d76 Merge branch 'jn/mailinfo-scissors'
* jn/mailinfo-scissors:
  Teach mailinfo %< as an alternative scissors mark
2010-04-07 15:34:06 -07:00
Junio C Hamano
8ccf40ac43 Merge branch 'jc/test-sleepless' into next
* jc/test-sleepless:
  war on "sleep" in tests
2010-04-07 15:33:34 -07:00
Junio C Hamano
701e863089 Merge branch 'ab/commit-empty-message' into next
* ab/commit-empty-message:
  Add option to git-commit to allow empty log messages
2010-04-07 15:33:34 -07:00
Junio C Hamano
7f5c112394 Merge branch 'eb/unpretty-b-format' into next
* eb/unpretty-b-format:
  Add `%B' in format strings for raw commit body in `git log' and friends
2010-04-07 15:33:34 -07:00
Junio C Hamano
e50fd3a92e Merge branch 'ar/config-from-command-line' into next
* ar/config-from-command-line:
  Use strbufs instead of open-coded string manipulation
  Allow passing of configuration parameters in the command line
2010-04-07 15:33:34 -07:00
Junio C Hamano
11ea09ade6 Merge branch 'ld/discovery-limit-to-fs' (early part) into next
* 'ld/discovery-limit-to-fs' (early part):
  Rename ONE_FILESYSTEM to DISCOVERY_ACROSS_FILESYSTEM
  GIT_ONE_FILESYSTEM: flip the default to stop at filesystem boundaries
  Add support for GIT_ONE_FILESYSTEM
  truncate cwd string before printing error message
  config.c: remove static keyword from git_env_bool()
2010-04-07 15:33:34 -07:00
Junio C Hamano
5651307fa8 Merge branch 'sr/remote-helper-export' into next
* sr/remote-helper-export:
  remote-helpers: add tests for testgit helper
  remote-helpers: add testgit helper
  remote-helpers: add support for an export command
  remote-helpers: allow requesing the path to the .git directory
  fast-import: always create marks_file directories
  clone: also configure url for bare clones
  clone: pass the remote name to remote_get
2010-04-07 15:33:33 -07:00
Ævar Arnfjörð Bjarmason
c9b5fde759 Add option to git-commit to allow empty log messages
Change git-commit(1) to accept the --allow-empty-message option
to allow a commit with an empty message.  This is analogous to the
existing --allow-empty option which allows a commit that records
no changes.  As these are mainly for interoperating with foreign SCM
systems, and are not meant for normal use, ensure that "git commit -h"
does not talk about them.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-04-07 15:22:57 -07:00
Jeff King
e3af3cfc40 fix typos and grammar in 1.7.1 draft release notes
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-04-07 14:32:51 -07:00
Junio C Hamano
bd88f9b107 Merge branch 'master' into next
* master:
  notes.h: declare bit field as unsigned to silence compiler complaints
2010-04-06 22:51:29 -07:00
Brandon Casey
a751b5cc96 notes.h: declare bit field as unsigned to silence compiler complaints
The IRIX MIPSPro compiler complains like this:

   cc-1107 c99: WARNING File = notes.h, Line = 215
     A signed bit field has a length of 1 bit.

           int suppress_default_notes:1;
               ^

'unsigned' is what was intended, so lets make it so.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-04-06 21:55:50 -07:00
Junio C Hamano
016e5ff243 war on "sleep" in tests
In many places in test suite we have "sleep"s that do not have to be
there.

 - I do not simply see the point of the one in t3500.  It may be making
   sure that the timestamp order of commits generated during the test is
   stable, in which case test_tick is the right ingredient to use without
   wasting tester's time.

 - The one in t4011 is to make sure that the plumbing diff-index notices
   the stat-dirtyness of a removed then identically recreated symlink.
   Keeping the old symlink around to make sure that a newly created
   symlink gets different ino would be sufficient for that purpose.

 - The one in t7600 is to make sure that "git merge" does not get confused
   by stat-dirty "file" in the working tree.  Again, keeping the old file
   around and creating an identical copy to ensure a different ino would
   be sufficient for that purpose.

The "racy git" tests in t0010 are inherently about mtime between the index
itself and index entries.  The "sleep" in that test must stay as they are.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-04-06 21:55:27 -07:00
Junio C Hamano
e6dad34530 Merge branch 'master' into next
* master:
  Git 1.7.1-rc0
2010-04-06 15:00:44 -07:00
Junio C Hamano
992c9add13 Merge branch 'sd/log-decorate' into next
* sd/log-decorate:
  log --pretty/--oneline: ignore log.decorate
2010-04-06 15:00:39 -07:00
Junio C Hamano
1b8066f52e Merge branch 'mg/notes-reflog' into next
* mg/notes-reflog:
  refs.c: Write reflogs for notes just like for branch heads
  t3301-notes: Test the creation of reflog entries
2010-04-06 15:00:39 -07:00
Junio C Hamano
537f6c7fb4 Git 1.7.1-rc0
Signed-off-by: Junio C Hamano <gitster@pobox.com>
v1.7.1-rc0
2010-04-06 15:00:01 -07:00
Junio C Hamano
b807c524df Merge branch 'da/maint-python-startup'
* da/maint-python-startup:
  Makefile: Remove usage of deprecated Python "has_key" method
2010-04-06 14:50:47 -07:00