Commit Graph

49453 Commits

Author SHA1 Message Date
Johannes Schindelin
c10078288f Merge 'jberezanski/wincred-sso-r2' into HEAD 2015-04-01 09:54:10 +01:00
Johannes Schindelin
a734aee4bc Merge 'gitk' into HEAD 2015-04-01 09:54:08 +01:00
Johannes Schindelin
2f1d6d2fb2 Merge 'git-gui' into HEAD 2015-04-01 09:54:06 +01:00
Johannes Schindelin
658804380a Merge 'criss-cross-merge' into HEAD 2015-04-01 09:54:04 +01:00
Johannes Schindelin
b6eef3094d Merge 'am-submodules' into HEAD 2015-04-01 09:54:03 +01:00
Johannes Schindelin
93e43168f7 Merge 'hide-dotgit' into HEAD 2015-04-01 09:54:01 +01:00
Johannes Schindelin
5b609d68a9 Merge 'unicode' into HEAD 2015-04-01 09:53:59 +01:00
Jakub Bereżański
3d05c9db6a wincred: handle empty username/password correctly
Empty (length 0) usernames and/or passwords, when saved in the Windows
Credential Manager, come back as null when reading the credential.

One use case for such empty credentials is with NTLM authentication, where
empty username and password instruct libcurl to authenticate using the
credentials of the currently logged-on user (single sign-on).

When locating the relevant credentials, make empty username match null.
When outputting the credentials, handle nulls correctly.

Signed-off-by: Jakub Bereżański <kuba@berezanscy.pl>
2015-04-01 08:14:45 +01:00
Jakub Bereżański
b796da52bc t0302: check helper can handle empty credentials
Make sure the helper does not crash when blank username and password is
provided. If the helper can save such credentials, it should be able to
read them back.

Signed-off-by: Jakub Bereżański <kuba@berezanscy.pl>
2015-04-01 08:14:44 +01:00
Sebastian Schuberth
03907281e1 gitk: Use an external icon file on Windows
Git for Windows now ships with the new Git icon from git-scm.com. Use that
icon file if it exists instead of the old procedurally drawn one.

This patch was sent upstream but so far no decision on its inclusion was
made, so commit it to our fork.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
2015-04-01 08:14:29 +01:00
Chris West (Faux)
49c6aab5fe Fix another invocation of git from gitk with an overly long command-line
Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
2015-04-01 08:14:27 +01:00
Johannes Schindelin
5773fe85f7 Work around the command line limit 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).

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>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-04-01 08:14:26 +01:00
Johannes Schindelin
0a93c2d5b8 git gui: set GIT_ASKPASS=git-gui--askpass if not set yet
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-04-01 08:14:21 +01:00
Heiko Voigt
4381ee1db4 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>
2015-04-01 08:14:20 +01:00
Heiko Voigt
de25291a85 Revert "git-gui: set GIT_DIR and GIT_WORK_TREE after setup"
This reverts commit a9fa11fe5b.
2015-04-01 08:14:18 +01:00
Johannes Sixt
671913017a criss cross rename failure workaround
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-04-01 08:14:13 +01:00
Johannes Schindelin
56436f21a6 git am: ignore dirty submodules
This fixes a rebase in the presence of dirty submodules. This is
orthogonal to the application of patches changing submodules.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-04-01 08:14:08 +01:00
Pat Thoyts
e586f21eb9 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>
2015-04-01 08:14:04 +01:00
Johannes Schindelin
819ed172fc 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>
2015-04-01 08:14:03 +01:00
Erik Faye-Lund
8e716749c1 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>
2015-04-01 08:13:44 +01:00
Karsten Blees
a751e8d7de git-gui:handle the encoding of Git's output correctly
If we use 'eval exec $opt $cmdp $args' to execute git command,
tcl engine will convert the output of the git comand with the rule
system default code page to unicode.

But cp936 -> unicode conversion implicitly done by exec is not reversible.
So we have to use git_read instead.

Bug report and an original reproducer by Cloud Chou:
https://github.com/msysgit/git/issues/302

Karsten Blees writes this code patch.
Cloud Chou find the reason of the bug.

Thanks-to: dscho
Thanks-to: patthoyts
Signed-off-by: Karsten Blees <blees@dcon.de>
Original-test-by: Cloud Chou <515312382@qq.com>
Signed-off-by: Cloud Chou <515312382@qq.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-04-01 08:11:45 +01:00
Karsten Blees
21c3d2147b Unicode file name support (gitk and git-gui)
Assumes file names in git tree objects are UTF-8 encoded.

On most unix systems, the system encoding (and thus the TCL system
encoding) will be UTF-8, so file names will be displayed correctly.

On Windows, it is impossible to set the system encoding to UTF-8. Changing
the TCL system encoding (via 'encoding system ...', e.g. in the startup
code) is explicitly discouraged by the TCL docs.

Change gitk and git-gui functions dealing with file names to always convert
from and to UTF-8.

Signed-off-by: Karsten Blees <blees@dcon.de>
2015-04-01 08:11:43 +01:00
Johannes Schindelin
0eff6b5a31 Start the merging-rebase to v2.3.5
This commit starts the rebase of c25fa2e to cb64ed4

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-04-01 08:09:03 +01:00
dscho
8978113bf1 Merge pull request #61 from git-for-windows/fix-msys1-build
fixup! Silence GCC's "cast of pointer to integer of a different size" warning
2015-04-01 08:54:40 +02:00
Sebastian Schuberth
c7bd3f93e7 fixup! Silence GCC's "cast of pointer to integer of a different size" warning 2015-04-01 08:16:20 +02:00
Junio C Hamano
52735a6892 Git 2.3.5
Signed-off-by: Junio C Hamano <gitster@pobox.com>
v2.3.5
2015-03-31 14:57:10 -07:00
Junio C Hamano
ad00aebfe9 Merge branch 'ss/pull-rebase-preserve' into maint
* ss/pull-rebase-preserve:
  docs: clarify what git-rebase's "-p" / "--preserve-merges" does
  docs: clarify "preserve" option wording for git-pull
2015-03-31 14:54:12 -07:00
Junio C Hamano
ab0fb57aac Merge branch 'jc/report-path-error-to-dir' into maint
Code clean-up.

* jc/report-path-error-to-dir:
  report_path_error(): move to dir.c
2015-03-31 14:53:08 -07:00
Junio C Hamano
a78fc4af82 Merge branch 'ph/push-doc-cas' into maint
* ph/push-doc-cas:
  git-push.txt: clean up force-with-lease wording
2015-03-31 14:52:24 -07:00
Johannes Schindelin
bf11bd4df4 Merge branch 'squelch-warnings'
This branch suppresses or resolves compile warnings noticed in

	https://github.com/git-for-windows/git/issues/52

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-31 21:23:30 +01:00
Johannes Schindelin
5621f24dce Silence GCC's "cast of pointer to integer of a different size" warning
When calculating hashes from pointers, it actually makes sense to cut
off the most significant bits. In that case, said warning does not make
a whole lot of sense.

So let's just work around it.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-31 18:24:15 +01:00
Johannes Schindelin
4646cc2993 mingw: avoid warnings when casting HANDLEs to int
HANDLE is defined internally as a void *, but in many cases it is
actually guaranteed to be a 32-bit integer. In these cases, GCC should
not warn about a cast of a pointer to an integer of a different type
because we know exactly what we are doing.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-31 18:06:33 +01:00
Johannes Schindelin
c557dee8da mingw: uglify pthread_mutex_init definition to shut up warning
When the result of a (a, 0) expression is not used, GCC now finds it
necessary to complain with a warning:

	right-hand operand of comma expression has no effect

Let's just pretend to use the 0 value and have a peaceful and quiet life
again.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-31 17:39:54 +01:00
Johannes Schindelin
c210b6a5fe Squelch warning about an integer overflow
We cannot rely on long integers to have more than 32 bits...

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-31 17:14:55 +01:00
Johannes Schindelin
5e2a65494c squash! Start supporting MSys2 in config.mak.uname
With __USE_MINGW_ANSI_STDIO defined to 0, the printf/scanf formats
magically stop throwing warnings!

Assisted-by: Waldek Maleska <weakcamel@users.github.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-31 17:13:56 +01:00
Johannes Schindelin
fa06ce5175 TEMP: turn all warnings into errors
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-31 16:49:01 +01:00
Johannes Schindelin
2b79548ccd squash! Start supporting MSys2 in config.mak.uname
Rename to

config.mak.uname: support MSys2

to make it easier to find the latest merging rebase via

	git rev-parse ':/Start'

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-31 16:01:34 +01:00
Sebastian Schuberth
d50d31e880 docs: clarify what git-rebase's "-p" / "--preserve-merges" does
Ignoring a merge can be read as ignoring the changes a merge commit
introduces altogether, as if the entire side branch the merge commit
merged was removed from the history.  But that is not what happens
if "-p" is not specified.  What happens is that the individual
commits a merge commit introduces are replayed in order, and only
any possible merge conflict resolutions or manual amendments to the
merge commit are ignored.

Get this straight in the docs.

Also, do not say that merge commits are *tried* to be recreated. As that is
true almost everywhere it is better left unsaid.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2015-03-30 13:44:29 -07:00
dscho
f0740e51b2 Merge pull request #54 from nalla/git-wrapper-spaces-fix
git-wrapper: support git.exe to be in a spaced dir
2015-03-30 17:16:27 +02:00
nalla
caaae01999 git-wrapper: support git.exe to be in a spaced dir
When *Git for Windows* is installed into a directory that has spaces in
it, e.g. `C:\Program Files\Git`, the `git-wrapper` appends this directory
unquoted when fixing up the command line. To resolve this, just quote the
provided `execpath`.

Signed-off-by: nalla <nalla@hamal.uberspace.de>
2015-03-30 15:10:38 +01:00
Johannes Schindelin
e992745d61 Merge branch 'git-wrapper-revisited'
This undoes the contentious Git wrapper changes I made earlier, and
retains just the bare minimum to equip the Portable Application with a
Git Bash and a Git CMD.

The resource editing has been taken out, i.e. there is no longer a way
to reconfigure on the command-line which terminal emulator is used by
the Git Bash.

While at it, also fix the problems with the Git wrapper when serving as
replacement for the hardlinked builtins which were pointed out by Philip
Oakley in Git for Windows issue 52.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-28 22:58:31 +01:00
Johannes Schindelin
be311e2381 git-wrapper: Allow git-cmd.exe to add only /cmd/ to the PATH
The idea of having the Git wrapper in the /cmd/ directory is to allow
adding only a *tiny* set of executables to the search path, to allow
minimal interference with other software applications. It is quite
likely, for example, that other software applications require their own
version of zlib1.dll and would not be overly happy to find the version
Git for Windows ships.

The /cmd/ directory also gives us the opportunity to let the Git wrapper
handle the `gitk` script. It is a Tcl/Tk script that is not recognized
by Windows, therefore calling `gitk` in `cmd.exe` would not work, even
if we add all of Git for Windows' bin/ directories.

So let's use the /cmd/ directory instead of adding /mingw??/bin/ and
/usr/bin/ to the PATH when launching Git CMD.

The way we implemented Git CMD is to embed the appropriate command line
as string resource into a copy of the Git wrapper. Therefore we extended
that syntax to allow for configuring a minimal search path.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-28 19:15:57 +01:00
Johannes Schindelin
4766c3db08 git-wrapper: optionally skip cd $HOME when configured via resources
We recently added the ability to configure copies of the Git wrapper to
launch custom command-lines, configured via plain old Windows resources.
The main user is Git for Windows' `git-bash.exe`, of course. When the
user double-clicks the `git bash` icon, it makes sense to start the Bash
in the user's home directory.

Third-party software, such as TortoiseGit or GitHub for Windows, may
want to start the Git Bash in another directory, though.

Now, when third-party software wants to call Git, they already have to
construct a command-line, and can easily pass a command-line option
`--no-cd` (which this commit introduces), and since that option is not
available when the user double-clicks an icon on the Desktop or in the
Explorer, let's keep the default to switch to the home directory if the
`--no-cd` flag was not passed along.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-28 19:04:24 +01:00
Johannes Schindelin
b072d688cf git-wrapper: make command-line argument skipping more robust
When we rewrite the command-line to call the *real* Git, we want to skip
the first command-line parameter. The previous code worked in most
circumstances, but was a bit fragile because it assumed that no fancy
quoting would take place.

In the next commit, we will want to have the option to skip more than
just one command-line parameter, so we have to be much more careful with
the command-line handling.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-28 19:04:21 +01:00
Johannes Schindelin
83553058ba git-wrapper: remove 'gui' and 'citool' handling
In the meantime, Git for Windows learned to handle those subcommands
quite well itself; There is no longer a need to special-case them in the
wrapper.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-28 19:04:19 +01:00
Johannes Schindelin
2ac10bd7c5 Let the Git wrapper replace cmd\gitk.cmd, too
In a push to polish Git for Windows more, we are moving away from
scripts toward proper binaries.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-28 19:04:17 +01:00
Johannes Schindelin
41c1e1f32c Git wrapper: allow overriding what executable is called
The Git wrapper does one thing, and does it well: setting up the
environment required to run Git and its scripts, and then hand off to
another program.

We already do this for the Git executable itself; in Git for Windows'
context, we have exactly the same need also when calling the Git Bash or
Git CMD. However, both are tied to what particular shell environment you
use, though: MSys or MSys2 (or whatever else cunning developers make
work for them). This means that the Git Bash and Git CMD need to be
compiled in the respective context (e.g. when compiling the
mingw-w64-git package in the MSys2 context).

Happily, Windows offers a way to configure compiled executables:
resources. So let's just look whether the current executable has a
string resource and use it as the command-line to execute after the
environment is set up. To support MSys2's Git Bash better (where
`mintty` should, but might not, be available), we verify whether the
specified executable exists, and keep looking for string resources if it
does not.

For even more flexibility, we expand environment variables specified as
`@@<VARIABLE-NAME>@@`, and for convenience `@@EXEPATH@@` expands into
the directory in which the executable resides.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-28 19:04:16 +01:00
Johannes Schindelin
1b1e072595 fixup! git-wrapper: add code to configure command-lines to be launched
The intention of this change was to make it easier for the Git for
Windows installer, or for power Git users, to change the command-line
launched when executing Git Bash. The idea was to allow reconfiguring
the Git Bash to run different terminals than MSys2's default, mintty.

However, the comments this commit got let no room for misunderstanding:
at least three developers who gained trust by being active in the Git
for Windows offered their vetoes.

RIP, resource editor.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-28 19:04:13 +01:00
Johannes Schindelin
c5cdad2f8d fixup! git-wrapper: allow the edit-res.exe copy to change icons, too
Instead of making it possible to change the .exe icon of git-bash.exe or
git-cmd.exe, this change was compared to adding the option to format USB
drives.

Let's get rid of this change, therefore, before real people are harmed.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-28 19:04:12 +01:00
Johannes Schindelin
580472680d git-wrapper: inherit stdin/stdout/stderr even without a console
Otherwise the output of Git commands cannot be caught by, say, Git GUI
(because it is running detached from any console, which would make
`git.exe` inherit the standard handles implicitly).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-03-28 19:03:31 +01:00