Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

msysgit 2.1.0 #231

Merged
merged 1,042 commits into from
Aug 16, 2014
Merged

msysgit 2.1.0 #231

merged 1,042 commits into from
Aug 16, 2014

Conversation

kblees
Copy link

@kblees kblees commented Aug 16, 2014

I just did a merging-rebase to the newly released v2.1.0. The test suite ran without failures. And with all the Unicode patches out of the way (thanks to Stepan), the history looks really neat and simple.

Notable changes to current master:

  • removed patches / branches that are in upstream
  • simplified dependencies between branches
  • picked missing patches from maint-1.9
  • dropped the getenv("HOME") patch (HOME is set by all calling shells in a more fault-tolerant way)
  • dropped the symlink branch (causes ~30 test failures and breaks long paths support and fscache)
  • dropped the fixes for issue msysgit 1.9.4 breaks on long pathnames msysgit#227 in favor of the upstream / maint-1.9 versions

Here's what I did to the rebase script to get there:

--- git-rebase-todo-v2.1.0-org.txt  Fri Aug 15 23:39:25 2014
+++ git-rebase-todo-v2.1.0-final.txt    Sat Aug 16 00:57:05 2014
@@ -2,17 +2,7 @@
 mark onto

 # Branch: refs/rewritten/junio/next
-bud
-pick 1e9a108 git tag --contains: avoid stack overflow
-pick d574dd2 SVN.pm::parse_svn_date: allow timestamps with a single-digit hour
-pick ea5f4e2 compat/poll: sleep 1 millisecond to avoid busy wait
-pick cd4f75f MSVC: link dynamically to the CRT
-pick 7bf15ca Revert "submodules: fix ambiguous absolute paths under Windows"
-pick b5abaf8 wincred: add install target
-pick 841ca04 wincred: avoid overwriting configured variables
-pick c896851 git grep -O -i: if the pager is 'less', pass the '-I' option
-pick 6c536a9 Windows: Allow using UNC path for git repository
-mark refs/rewritten/junio/next
+# all in upstream

 # Branch: refs/rewritten/junio/notyet
 bud
@@ -20,60 +10,20 @@
 mark refs/rewritten/junio/notyet

 # Branch: unicode
+# all in upstream except gitk/git-gui
 bud
-pick bdf69b2 Support Unicode console output on Windows
-pick 2fde3e0 Detect console streams more reliably on Windows
-pick 11a11d1 Warn if the Windows console font doesn't support Unicode
-pick 08e61ee Win32 dirent: remove unused dirent.d_ino member
-pick 166b5bf Win32 dirent: remove unused dirent.d_reclen member
-pick 8c44fd4 Win32 dirent: change FILENAME_MAX to MAX_PATH
-pick 17b9a46 Win32 dirent: clarify #include directives
-pick d5356f5 Win32 dirent: improve dirent implementation
-pick 70878a7 Win32: fix potential multi-threading issue
-pick 0b710a0 Win32: move main macro to a function
-pick f0a875b MinGW: disable CRT command line globbing
-pick 981aa53 Unicode console: fix font warning on Vista and Win7
-pick 93c1c5b Revert "Windows: teach getenv to do a case-sensitive search"
-pick 5654a6c Revert "mingw.c: move definition of mingw_getenv down"
-pick 08684f9 Enable color output in Windows cmd.exe
-pick 3abcb04 MSVC: fix winansi.c compile errors
-pick 3833abc Win32: Thread-safe windows console output
-pick 018c94a Win32: add Unicode conversion functions
-pick 9abb9b4 Win32: Unicode file name support (except dirent)
-pick ca865b5 Win32: Unicode file name support (dirent)
 pick 6b25d49 Unicode file name support (gitk and git-gui)
-pick 63f092d Win32: Unicode arguments (outgoing)
-pick 7dc61f5 Win32: Unicode arguments (incoming)
-pick 45e28a4 Win32: sync Unicode console output and file system
-pick 7a3c448 Win32: Unicode environment (outgoing)
-pick 50cd615 Win32: Unicode environment (incoming)
-pick 10e1987 Win32: fix environment memory leaks
-pick 946ba29 Win32: unify environment case-sensitivity
-pick 75f1827 Let mingw_execve() return an int
-pick 45f09a0 Win32: simplify internal mingw_spawn* APIs
-pick fbe6bfc Win32: move environment functions
-pick 851e9bb Win32: unify environment function names
-pick c6f9aae Win32: factor out environment block creation
-pick e6e3f76 Win32: don't copy the environment twice when spawning child processes
-pick 10f5056 Win32: reduce environment array reallocations
-pick f0ad399 Win32: use low-level memory allocation during initialization
-pick 7f7675e Win32: keep the environment sorted
-pick 80e6f0f Win32: patch Windows environment on startup
-pick 94948aa Win32: fix detection of empty directories in is_dir_empty
-pick 67934f9 Win32: fix broken pipe detection
-pick cd0792a Win32: fix segfault in WriteConsoleW when debugging in gdb
 mark unicode

 # Branch: hide-dotgit
-rewind unicode # Win32: fix segfault in WriteConsoleW when debugging in gdb
+# no longer needs unicode
+bud
 pick 0cdb44c core.hidedotfiles: hide '.git' dir by default
 pick 94519d4 When initializing .git/, record the current setting of core.hideDotFiles
 pick 4620246 mingw: add tests for the hidden attribute on the git directory
 mark hide-dotgit

-rewind hide-dotgit # mingw: add tests for the hidden attribute on the git directory
-pick 8dfd8dc Add a Windows-specific fallback to getenv("HOME");
-mark 8dfd8dc
+# Branch 8dfd8dc dropped - HOME is set correctly by all callers (with exists check)

 # Branch: am-submodules
 bud
@@ -88,6 +38,8 @@
 # Branch: deny-current-branch
 bud
 pick 528a03f Add a few more values for receive.denyCurrentBranch
+# DIE_ON_ERROR -> UPDATE_REFS_DIE_ON_ERR
+fixup e209843 fixup! Add a few more values for receive.denyCurrentBranch
 pick 620d6e9 Let deny.currentBranch=updateInstead ignore submodules
 mark deny-current-branch

@@ -121,10 +73,7 @@
 mark jberezanski/wincred-sso-r2

 # Branch: send-email
-bud
-pick 775b1e2 send-email: accept absolute path even on Windows
-pick 2d6fc09 send-email: handle Windows paths for display just like we do for processing
-mark send-email
+# all in upstream

 # Branch: pull-rebase-interactive
 bud
@@ -143,26 +92,24 @@
 mark some-CR-fixes

 # Branch: win-tests-fixes
+# some in upstream
 bud
 pick 230d511 work around misdetection of stdin attached to a tty
 pick 79bf6bd Handle new t1501 test case properly with MinGW
-pick f7af204 MinGW: Skip test redirecting to fd 4
 pick 6b1282f t3102: Windows filesystems may not use a literal asterisk in filenames.
 pick 480cd59 t9350: point out that refs are not updated correctly
-pick 0c28f80 MinGW: disable legacy encoding tests
 pick 0a8629c t1050: Fix invalid call to dd(1)
 pick e2e62ce Work around a problem identified by BuildHive
 pick 9f3afbc t0008: avoid absolute path on Windows as colon is used in the tests
-pick 566b373 t4210: skip command-line encoding tests on mingw
 pick e4aba7b t800[12]: work around MSys limitation
-pick 0ece80f t9902: mingw-specific fix for gitfile link files
-pick 5b682f1 Disable t0110's high-bit test on Windows
-pick 1ad487c tests: do not pass iso8859-1 encoded parameter
+# from kasal/msysgit-2.0.0
+pick 4e64cd8 tests: turn off git-daemon tests if FIFOs are not available
 mark win-tests-fixes

 # Branch: remote-hg-prerequisites
 bud
 pick b1a3988 fast-export: do not refer to non-existing marks
+# fixed conflict: fastexport->argv[argc++] = "--"; -> argv_array_push(&fastexport->args, "--");
 pick df8dfa3 transport-helper: add trailing --
 pick e32da27 remote-helper: check helper status after import/export
 pick 635328c Always auto-gc after calling a fast-import transport
@@ -174,7 +121,8 @@
 mark http-msys-paths

 # Branch: fix-externals
-rewind unicode # Win32: fix segfault in WriteConsoleW when debugging in gdb
+# no longer needs unicode
+bud
 pick 5868bd1 Fixed wrong path delimiter in exe finding
 pick 7ed7c52 Fix launching of externals from Unicode paths
 pick 1b8301f Make non-.exe externals work again
@@ -183,6 +131,8 @@
 # Branch: fix-is-exe
 bud
 pick a1d1b71 help: correct behavior for is_executable on Windows
+# has_extension -> ends_with
+fixup aced039 fixup! help: correct behavior for is_executable on Windows
 mark fix-is-exe

 # Branch: msysgit/tip4commit
@@ -201,29 +151,32 @@
 mark kasal/tests-no-posix

 # Branch: kblees/kb/fscache-v4-tentative-1.8.5
-rewind unicode # Win32: fix segfault in WriteConsoleW when debugging in gdb
+# rebase on hide-dotgit instead of merging in the middle
+rewind hide-dotgit # mingw: add tests for the hidden attribute on the git directory
 pick 52fa661 Win32: make FILETIME conversion functions public
 pick 1262469 Win32: dirent.c: Move opendir down
 pick bab7936 Win32: Make the dirent implementation pluggable
 pick 5e96acf Win32: make the lstat implementation pluggable
-merge refs/rewritten/8dfd8dc -C 0ac3c91 # Merge 'home' into HEAD
 pick e462944 add infrastructure for read-only file system level caches
 pick 1823b88 Win32: add a cache below mingw's lstat and dirent implementations
+# from maint-1.9 PR #205 kblees/kb/fscache-load-directories-once
+pick c8a51b4 fscache: load directories only once
 mark kblees/kb/fscache-v4-tentative-1.8.5

 # Branch: kblees/kb/long-paths-v2
-rewind kblees/kb/fscache-v4-tentative-1.8.5 # Win32: add a cache below mingw's lstat and dirent implementations
+rewind kblees/kb/fscache-v4-tentative-1.8.5 # fscache: load directories only once
 pick 393fd17 Add a test demonstrating a problem with long submodule paths
 pick a0e78a5 Win32: support long paths
+# from maint-1.9 PR #212 kblees/kb/fix-checkout-with-long-directories
+# (the other patches of that branch are in upstream)
+pick bb4df80 Win32: fix 'lstat("dir/")' with long paths
 mark kblees/kb/long-paths-v2

-# Branch: kasal/msysgit-2.0.0
+# Branch: kb/msysgit-2.1.0
 bud
-merge refs/rewritten/refs/rewritten/junio/next -C 674dd13 # Merge 'refs/rewritten/junio/next' into HEAD
 merge refs/rewritten/refs/rewritten/junio/notyet -C 6ac4a73 # Merge 'refs/rewritten/junio/notyet' into HEAD
 merge refs/rewritten/unicode -C dc63934 # Merge 'unicode' into HEAD
 merge refs/rewritten/hide-dotgit -C 9e8817c # Merge 'hide-dotgit' into HEAD
-merge refs/rewritten/8dfd8dc -C 2e69421 # Merge 'home' into HEAD
 merge refs/rewritten/am-submodules -C 82c8da7 # Merge 'am-submodules' into HEAD
 merge refs/rewritten/criss-cross-merge -C fb0f5d1 # Merge 'criss-cross-merge' into HEAD
 merge refs/rewritten/deny-current-branch -C 32143d9 # Merge 'deny-current-branch' into HEAD
@@ -231,7 +184,6 @@
 merge refs/rewritten/gitk -C 83d825b # Merge 'gitk' into HEAD
 merge refs/rewritten/gitweb-syntax -C 146e000 # Merge 'gitweb-syntax' into HEAD
 merge refs/rewritten/jberezanski/wincred-sso-r2 -C 9dd0c91 # Merge 'jberezanski/wincred-sso-r2' into HEAD
-merge refs/rewritten/send-email -C cd247ad # Merge 'send-email' into HEAD
 merge refs/rewritten/pull-rebase-interactive -C 8746a0e # Merge 'pull-rebase-interactive' into HEAD
 merge refs/rewritten/some-CR-fixes -C 5fc80b7 # Merge branch 'some-CR-fixes'
 merge refs/rewritten/win-tests-fixes -C d9608ec # Merge 'win-tests-fixes' into HEAD
@@ -244,38 +196,15 @@
 merge refs/rewritten/kasal/tests-no-posix -C 0346eed # Merge pull request #181 from kasal/tests-no-posix
 merge refs/rewritten/kblees/kb/fscache-v4-tentative-1.8.5 -C 44806b0 # Merge remote-tracking branch 'kblees/kb/fscache-v4-tentative-1.8.5' into thicket-1.8.5.2
 merge refs/rewritten/kblees/kb/long-paths-v2 -C 2a37bdc # Merge pull request #122 from kblees/kb/long-paths-v2
-pick 4e64cd8 tests: turn off git-daemon tests if FIFOs are not available
-mark kasal/msysgit-2.0.0
+mark kb/msysgit-2.1.0

 # Branch: frogonwheels/mrg/symlink-v6
-bud
-merge refs/rewritten/kasal/msysgit-2.0.0 -C 7e872d2 # Merge pull request #196 from kasal/msysgit-2.0.0
-mark 7e872d2
+# dropped because it doesn't work

-pick 82cc187 MinGW: Add symlink support for NTFS on windows
-pick 75b8a67 MinGW: Allow passing the symlink target type from index information.
-pick eabcbcc mingw: Create directory/file symlink from information available
-pick 4d733b9 test: Work around lack of windows native symlink support in current msys
-pick dda0d3d test: Don't have dangling symlinks in tests (for msys)
-pick 4a83680 test: Factor abspath_of_dir for testing 'absolute paths'
-pick a662ef7 test: Implement mingw abspath_of_dir
-pick 2fa9eca test: Factor out 'check_symlink' for stash tests
-pick 3259ff9 test: Override 'check_symlink' to work with incomplete mingw
-pick 1919ecf contrib: make git-new-workdir work with windows symlinks.
-pick 0a77793 test: Differentiate ability for gnu utils to handle symlinks from git
-pick 1930ec6 test: Fixup 3900 i38n quoting
-pick db19ecf test: Introduce binary compare function
-pick 3e5df5d test: Fix remote failure test to use correct env variable
-mark frogonwheels/mrg/symlink-v6
-
-rewind 7e872d2 # Merge pull request #196 from kasal/msysgit-2.0.0
-merge refs/rewritten/frogonwheels/mrg/symlink-v6 -C 840d1f9 # Merge pull request #172 from frogonwheels/mrg/symlink-v6
-pick d49a708 Win32: fix checkout problem with directories exceeding MAX_PATH
-fixup dc371d1 Win32: fix checkout problem with directories exceeding MAX_PATH
-fixup d147b44 Win32: fix checkout problem with directories exceeding MAX_PATH
-pick b31f626 Use a strbuf in symlink
+# "Win32: fix checkout problem with directories exceeding MAX_PATH"
+# has been replaced with upstream fixes and "Win32: fix 'lstat("dir/")' with long paths" above

-cleanup  refs/rewritten/junio/next refs/rewritten/junio/notyet unicode hide-dotgit 8dfd8dc am-submodules criss-cross-merge deny-current-branch git-gui gitk gitweb-syntax jberezanski/wincred-sso-r2 send-email pull-rebase-interactive some-CR-fixes win-tests-fixes remote-hg-prerequisites http-msys-paths fix-externals fix-is-exe msysgit/tip4commit t-b/sideband-bug kasal/tests-no-posix kblees/kb/fscache-v4-tentative-1.8.5 kblees/kb/long-paths-v2 kasal/msysgit-2.0.0 frogonwheels/mrg/symlink-v6 7e872d2
+cleanup  refs/rewritten/junio/notyet unicode hide-dotgit am-submodules criss-cross-merge deny-current-branch git-gui gitk gitweb-syntax jberezanski/wincred-sso-r2 pull-rebase-interactive some-CR-fixes win-tests-fixes remote-hg-prerequisites http-msys-paths fix-externals fix-is-exe msysgit/tip4commit t-b/sideband-bug kasal/tests-no-posix kblees/kb/fscache-v4-tentative-1.8.5 kblees/kb/long-paths-v2 kb/msysgit-2.1.0

 # Rebase b31f626..b31f626 onto 6c4ab27
 #

gitster and others added 30 commits July 16, 2014 11:11
* maint-1.9:
  annotate: use argv_array
During "git rebase --merge", a conflicted patch could not be
skipped with "--skip" if the next one also conflicted.

* bc/fix-rebase-merge-skip:
  rebase--merge: fix --skip with two conflicts in a row
A handful of code paths had to read the commit object more than
once when showing header fields that are usually not parsed.  The
internal data structure to keep track of the contents of the commit
object has been updated to reduce the need for this double-reading,
and to allow the caller find the length of the object.

* jk/commit-buffer-length:
  reuse cached commit buffer when parsing signatures
  commit: record buffer length in cache
  commit: convert commit->buffer to a slab
  commit-slab: provide a static initializer
  use get_commit_buffer everywhere
  convert logmsg_reencode to get_commit_buffer
  use get_commit_buffer to avoid duplicate code
  use get_cached_commit_buffer where appropriate
  provide helpers to access the commit buffer
  provide a helper to set the commit buffer
  provide a helper to free commit buffer
  sequencer: use logmsg_reencode in get_message
  logmsg_reencode: return const buffer
  do not create "struct commit" with xcalloc
  commit: push commit_index update into alloc_commit_node
  alloc: include any-object allocations in alloc_report
  replace dangerous uses of strbuf_attach
  commit_tree: take a pointer/len pair rather than a const strbuf
Code to avoid adding the same alternate object store twice was
subtly broken for a long time, but nobody seems to have noticed.

* rs/fix-alt-odb-path-comparison:
  sha1_file: avoid overrunning alternate object base string
"%G" (nothing after G) is an invalid pretty format specifier, but
the parser did not notice it as garbage.

* jk/pretty-G-format-fixes:
  move "%G" format test from t7510 to t6006
  pretty: avoid reading past end-of-string with "%G"
  t7510: check %G* pretty-format output
  t7510: test a commit signed by an unknown key
  t7510: use consistent &&-chains in loop
  t7510: stop referring to master in later tests
"git clone -b brefs/tags/bar" would have mistakenly thought we were
following a single tag, even though it was a name of the branch,
because it incorrectly used strstr().

* jc/fix-clone-single-starting-at-a-tag:
  builtin/clone.c: detect a clone starting at a tag correctly
Signed-off-by: Junio C Hamano <gitster@pobox.com>
An experiment to use two files (the base file and incremental
changes relative to it) to represent the index to reduce I/O cost
of rewriting a large index when only small part of the working tree
changes.

* nd/split-index: (32 commits)
  t1700: new tests for split-index mode
  t2104: make sure split index mode is off for the version test
  read-cache: force split index mode with GIT_TEST_SPLIT_INDEX
  read-tree: note about dropping split-index mode or index version
  read-tree: force split-index mode off on --index-output
  rev-parse: add --shared-index-path to get shared index path
  update-index --split-index: do not split if $GIT_DIR is read only
  update-index: new options to enable/disable split index mode
  split-index: strip pathname of on-disk replaced entries
  split-index: do not invalidate cache-tree at read time
  split-index: the reading part
  split-index: the writing part
  read-cache: mark updated entries for split index
  read-cache: save deleted entries in split index
  read-cache: mark new entries for split index
  read-cache: split-index mode
  read-cache: save index SHA-1 after reading
  entry.c: update cache_changed if refresh_cache is set in checkout_entry()
  cache-tree: mark istate->cache_changed on prime_cache_tree()
  cache-tree: mark istate->cache_changed on cache tree update
  ...
* tb/crlf-tests:
  t0027: combinations of core.autocrlf, core.eol and text
  t0025: rename the test files
Teach "git replace" an "--edit" mode.

* cc/replace-edit:
  replace: use argv_array in export_object
  avoid double close of descriptors handed to run_command
  replace: replace spaces with tabs in indentation
Teach "git replace --edit" mode a "--raw" option to allow
editing the bare-metal representation data of objects.

* jk/replace-edit-raw:
  replace: add a --raw mode for --edit
* ep/submodule-code-cleanup:
  submodule.c: use the ARRAY_SIZE macro
* jk/strip-suffix:
  prepare_packed_git_one: refactor duplicate-pack check
  verify-pack: use strbuf_strip_suffix
  strbuf: implement strbuf_strip_suffix
  index-pack: use strip_suffix to avoid magic numbers
  use strip_suffix instead of ends_with in simple cases
  replace has_extension with ends_with
  implement ends_with via strip_suffix
  add strip_suffix function
  sha1_file: replace PATH_MAX buffer with strbuf in prepare_packed_git_one()
Merging changes into a file that ends in an incomplete line made the
last line into a complete one, even when the other branch did not
change anything around the end of file.

* mk/merge-incomplete-files:
  git-merge-file: do not add LF at EOF while applying unrelated change
  t6023-merge-file.sh: fix and mark as broken invalid tests
"filter-branch" left an empty single-parent commit that results when
all parents of a merge commit gets mapped to the same commit, even
under "--prune-empty".

* cb/filter-branch-prune-empty-degenerate-merges:
  filter-branch: eliminate duplicate mapped parents
* kb/path-max-must-go:
  cache.h: rename cache_def_free to cache_def_clear
* mg/fix-log-mergetag-color:
  log: correctly identify mergetag signature verification status
The "--show-signature" option did not pay much attention to
"--graph".

* zk/log-graph-showsig:
  log: fix indentation for --graph --show-signature
* jl/test-lint-scripts:
  t/Makefile: always test all lint targets when running tests
  t/Makefile: check helper scripts for non-portable shell commands too
* po/error-message-style:
  doc: give some guidelines for error messages
One more to an already graduated topic.

* jk/skip-prefix:
  tag: use skip_prefix instead of magic numbers
* rs/code-cleaning:
  fsck: simplify fsck_commit_buffer() by using commit_list_count()
  commit: use commit_list_append() instead of duplicating its code
  merge: simplify merge_trivial() by using commit_list_append()
  use strbuf_addch for adding single characters
  use strbuf_addbuf for adding strbufs
An ancient rewrite passed a wrong pointer to a curl library
function in a rarely used code path.

* ah/fix-http-push:
  http-push.c: make CURLOPT_IOCTLDATA a usable pointer
Signed-off-by: Junio C Hamano <gitster@pobox.com>
* maint:
  Git 2.0.2
  annotate: use argv_array
There is no fchmod() on native Windows platforms (MinGW and MSVC), and the
equivalent Win32 API (SetFileInformationByHandle) requires Windows Vista.

Use chmod() instead.

Signed-off-by: Karsten Blees <blees@dcon.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Both refs.c and fsck.c have their own private copies of the is_branch function.
Delete the is_branch function from fsck.c and make the version in refs.c
public.

Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
When the `--fork-point` argument was added to `git rebase`, we changed
the value of $upstream to be the fork point instead of the point from
which we want to rebase.  When $orig_head..$upstream is empty this does
not change the behaviour, but when there are new changes in the upstream
we are no longer checking if any of them are patch-identical with
changes in $upstream..$orig_head.

Fix this by introducing a new variable to hold the fork point and using
this to restrict the range as an extra (negative) revision argument so
that the set of desired revisions becomes (in fork-point mode):

	git rev-list --cherry-pick --right-only \
		$upstream...$orig_head ^$fork_point

This allows us to correctly handle the scenario where we have the
following topology:

	    C --- D --- E  <- dev
	   /
	  B  <- master@{1}
	 /
	o --- B' --- C* --- D*  <- master

where:
- B' is a fixed-up version of B that is not patch-identical with B;
- C* and D* are patch-identical to C and D respectively and conflict
  textually if applied in the wrong order;
- E depends textually on D.

The correct result of `git rebase master dev` is that B is identified as
the fork-point of dev and master, so that C, D, E are the commits that
need to be replayed onto master; but C and D are patch-identical with C*
and D* and so can be dropped, so that the end result is:

	o --- B' --- C* --- D* --- E  <- dev

If the fork-point is not identified, then picking B onto a branch
containing B' results in a conflict and if the patch-identical commits
are not correctly identified then picking C onto a branch containing D
(or equivalently D*) results in a conflict.

This change allows us to handle both of these cases, where previously we
either identified the fork-point (with `--fork-point`) but not the
patch-identical commits *or* (with `--no-fork-point`) identified the
patch-identical commits but not the fact that master had been rewritten.

Reported-by: Ted Felix <ted@tedfelix.com>
Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Add support for configuring default sort ordering for git tags. Command
line option will override this configured value, using the exact same
syntax.

Cc: Jeff King <peff@peff.net>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Pretty much one year ago (94b410b, Jul 12 2013, .mailmap: Map
email addresses to names) I cleaned up the output of `git shortlog
-sne` of git.git by writing a .mailmap file fot the git.git project.

During the year Jens, Kazuki and Trần contributed to git.git using
different names, but the same email address; unify them.

Signed-off-by: Stefan Beller <stefanbeller@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This will allow us to work around the push issues pointed out in
msysgit#101.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Revert "test: fix t7001 cp to use POSIX options"
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
@kblees
Copy link
Author

kblees commented Aug 16, 2014

Is there anything special to consider when building a new release? It looks like GitHub will just let me upload the installers ([Portable]Git and msysGit-netinstall, built from [1]). Or do we want to wait for mingwGitDevEnv?

[1] https://github.com/kblees/msysgit/tree/Git-2.1.0-preview20140816

@buildhive
Copy link

MSysGit - the development behind Git for Windows » git #247 FAILURE
Looks like there's a problem with this pull request
(what's this?)

@sschuberth
Copy link

I don't think waiting for mingwGitDevEnv makes sense as it still has some way to go and you're basically ready for release.

@t-b
Copy link

t-b commented Aug 16, 2014

Is there anything special to consider when building a new release?

Nope, the steps are outlined in https://github.com/msysgit/msysgit/wiki/How-and-when-does-Git-for-Windows-get-released.

But you say

dropped the symlink branch (causes ~30 test failures and breaks long paths support and fscache)

so this means interested parties must reestablish symlink support?

Or do we want to wait for mingwGitDevEnv?

Well I'm actually in favour of pushing mingwGitDevEnv into and out of the door. We are currently two major releases behind and this creates some momentum which we should exploit. Updating master and creating a new release from it are two different things though.

@dscho
Copy link
Member

dscho commented Aug 16, 2014

I'm actually in favour of pushing mingwGitDevEnv into and out of the door.

I agree. There are a couple of things that need to be done (and I am guilty to be sidetracked by a move and professional issues, as well as overspending on my Windows Azure account, essentially killing my VM for three weeks). I guess the most important things would be:

  • rename mingwGitDevEnv to Git for Windows SDK
  • release an official alpha quality installer of the SDK
  • modify the installer to become the installer for both Git for Windows and the SDK (defaulting to the former, possibly with a checkbox to extend to the latter).

Once we have that, we can start addressing the test failures (if any are left) and make concrete plans to switch over, and retire msysGit, as well as move to the new GitHub org.

Thoughts?

@sschuberth
Copy link

Well, my plans about mingwGitDevEnv were / are like

  • Get the CI going again. Dscho, have you already configured your Azure account with a reasonable instance (like A2) that can run 24/7 without exceeding the credit?
  • Merge the outstanding PRs to mingwGitDevEnv(-packages). In order to test the PRs properly, I need to have the CI setup.
  • Transfer ownership of the mingwGitDevEnv(-packages) repos to the existing git4windows or git-for-windows organizations, renaming them to sdk(-packages) in the same run.
  • Release an installer for the SDK.
  • Work on an installer for Git for Windows based on the new SDK. Thios should be a separate installer, not an (compile time) option to the Git for Windows. This is because those two installer are supposed to work very differently: While the SDK installer will always require an Internet connection in order to download packages, the Git for Windows insatller should be self-contained.

@dscho
Copy link
Member

dscho commented Aug 16, 2014

Dscho, have you already configured your Azure account with a reasonable instance (like A2) that can run 24/7 without exceeding the credit?

It is up and running, and yes, it should not run out of credits again. You should be able to log in with the credentials I sent you.

Work on an installer for Git for Windows based on the new SDK. This should be a separate installer, not an (compile time) option to the Git for Windows. This is because those two installer are supposed to work very differently: While the SDK installer will always require an Internet connection in order to download packages, the Git for Windows insatller should be self-contained.

Ah, I understand what you want to do now. For starters, I thought it might be easier to have one installer for both, and offer Git for Windows via an "update site" for mingw-get. That way, the only difference between SDK and non-SDK would be whether the development tools to compile Git are installed or not (and the selection of the appropriate packages could be performed by a button).

In the long run, I am a total fan of the idea to move the /share/msysGit/WinGit/* files into their own repository, say, git4windows/installer.

@sschuberth
Copy link

For starters, I thought it might be easier to have one installer for both, and offer Git for Windows via an "update site" for mingw-get.

While it maybe would be easier for us to implement, I believe it would be more confusing for the Git for Windows user if we had such a "combined" installer. With all the confusion we had with msysgit vs. Git for Windows, I want to separate them as clearly as possible.

One effect of checking the remote helper status is that SPI exit codes no
longer bubble up to the porcelain layer - so we shouldn't test for this.

Signed-off-by: Karsten Blees <blees@dcon.de>
@buildhive
Copy link

MSysGit - the development behind Git for Windows » git #248 SUCCESS
This pull request looks good
(what's this?)

@t-b
Copy link

t-b commented Aug 16, 2014

A few comments from my side:

  • Combined/Mixed installer: We should have two separate installers. Obviously they should share source code if possible. For me installers are something which can be done at a late stage. The first step is to have it running for us. And an alpha quality installer for the SDK is something we already have, no?
  • Naming: Why not just use the names sdk, sdk-packages and git? If they all belong to the organization git-for-windows it is pretty obvious what they do. No?
  • @kblees This PR: Lets merge it. Interesting parties can then already start on more mingwGitDevEnv hacking with this new and shiny git. Regarding the symlinks I hope @frogonwheels can have a look.

@dscho Do you give public access to the jenkins in the VM?

@kblees
Copy link
Author

kblees commented Aug 16, 2014

Is there anything special to consider when building a new release?

Nope, the steps are outlined in https://github.com/msysgit/msysgit/wiki/How-and-when-does-Git-for-Windows-get-released.

Seems that I did all that, except for the 'upload' and 'mail' part.

The buildhive failure was in t5801, so it won't affect the installers I built this morning.

But you say

dropped the symlink branch (causes ~30 test failures and breaks long paths support and fscache)

so this means interested parties must reestablish symlink support?

I wouldn't call it 'reestablish', but basically, yes. I was contempt with the assertion in PR #172 that the patch series wouldn't affect users that don't use symlinks, but this is unfortunately not the case. The patch series adds a lot of unnecessary clutter and quite a few obvious bugs. Just to give an example: creating a hardlink now silently overwrites existing files, instead of failing with EEXISTS. There's no reason given why this is necessary or why it is related to symlinks.

Or do we want to wait for mingwGitDevEnv?

Well I'm actually in favour of pushing mingwGitDevEnv into and out of the door. We are currently two major releases behind and this creates some momentum which we should exploit. Updating master and creating a new release from it are two different things though.

On the other hand, releasing 2.x with mingwGitDevEnv creates a lot of pressure, and trying to rush things is prone to errors. The first 2.x release will sure see a lot of hits, and releasing a broken version due to a 'not quite ready' build environment will not exactly inspire confidence in Git...perhaps its smarter to switch to mingwGitDevEnv "When Its Done", preferably in a point-release?

Anyways...I'm ready to upload if you change your mind.

kblees added a commit that referenced this pull request Aug 16, 2014
@kblees kblees merged commit be148fa into msysgit:master Aug 16, 2014
@dscho
Copy link
Member

dscho commented Aug 16, 2014

Naming: Why not just use the names sdk, sdk-packages and git? If they all belong to the organization git-for-windows it is pretty obvious what they do. No?

I like it!

@dscho Do you give public access to the jenkins in the VM?

Once it is secured, yes. I did not manage to do that yet (I failed to make it accessible via HTTPS only), but @sschuberth is helping me. Once that is done, I will be glad to make it publicly viewable, and of course you will have your account.

Just to give an example: creating a hardlink now silently overwrites existing files, instead of failing with EEXISTS. There's no reason given why this is necessary or why it is related to symlinks.

Sorry, I missed that! @frogonwheels are you reading this?

perhaps its smarter to switch to mingwGitDevEnv "When Its Done", preferably in a point-release?

I like the former, but not so much the latter. The more we focus on getting stuff done before switching, the less likely we will be able to spend any effort on the switch altogether. And the current development environment just screeches with problems (see e.g. the SSH speed that was just fixed, and that would have been addressed by the switch, but now we put work into upgrading SSH and then into fixing git svn, all distractions!).

@kblees
Copy link
Author

kblees commented Aug 16, 2014

The more we focus on getting stuff done before switching, the less likely we will be able to spend any effort on the switch altogether.

That's a good point of course...I think there's a bit of MSYS-Unicode work for me, too :-)

@frogonwheels
Copy link

Hi, yes, I've just picked up on this.

Just to give an example: creating a hardlink now silently overwrites existing files, instead of failing with EEXISTS. There's no reason given why this is necessary or why it is related to symlinks.
Sorry, I missed that! @frogonwheels are you reading this?

Damn. This is obviously disturbing, I really believed that I had it pretty stable. I'd seen some fixes especially wrt to long names. I initially had done one change that moved away from a static buffer and it was put aside as not being relevant to the patchset, so I didn't follow on carefully enough with that.

I guess I'll have to try again with this and address issues like this hardlink problem (and tbh, I really didn't mess around with hardlinks, so maybe I could just fail with hardlink attempts).
Of course it would be much, much easier if underlying msys supported various bits of symlinks. What is unclear with commands like ln -s is how you specify that a target is a directory. It's a real problem. My bash overrides simply require that the target exists first.

@frogonwheels
Copy link

dropped the symlink branch (causes ~30 test failures and breaks long paths support and fscache)

I'll rebuild and address the test failures. I spent a lot of time getting the tests to go through. One big problem is the issue with dangling symlinks not supported by msys (in ls for example), and my ln () wrappers having to assume a file target if the symlink is dangling.

Are the long-path support breakages addressed by the tests? Is there a test the shows this issue with creating hard-links? I don't even have a clue where this happens, or why it happens.

@frogonwheels
Copy link

Ok, so WRT to symlinks and 'don't break anything' I'm starting by cherry-picking the first 3 commits that add the symlink feature and checking out the resultant breakages in the tests.

The first I find is a t0000-basic, and it appears it's the fault of the test. it uses test_ln_s_add from test-lib-functions.sh, which works fine, but then there's a find path* ! -type d -print | xargs git update-index --add which undoes all the work of test_ln_s_add. Yay. Another one I looked at seems to be centred round test_ln_s_add, so I'm suspecting a similar issue.

@frogonwheels
Copy link

Right - I've found the problem; it's that for some reason which I'm yet to find out, with the new branch core.symlinks is now behaving with default to true (which is the normal default for git elsewhere). With that enabled, it screws over all the faking that status does to pretend that the filesystem says symlink when it's really not.

Sooo, I made a change for the test to set a global config of core.symlinks=false, and to allow for me to set it to true. This causes a few problems, seeing as the system config is disabled, and the HOME directory is the trash directory where the default .git/ is set up. What I've now done is where required, I make SURE the ~/.gitconfig is present and adjusted the output appropriately, or moved the .gitconfig aside for a test or two.

If somebody could give me steps to reproduce the hardlink problem, I'll fix that (and add a test for it).

With the core.symlinks thing out of the way, there doesn't appear to be any issues with status and long filenames, again unless there's something I'm missing.

t-b added a commit to t-b/git that referenced this pull request Oct 13, 2014
t-b added a commit to t-b/git that referenced this pull request Nov 27, 2014
dscho added a commit to dscho/git that referenced this pull request Feb 22, 2015
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet