[PATCH 00/40] MinGW port

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



So here it is, the MinGW port of git.
This series is also available from

git://repo.or.cz/git/mingw/j6t.git upstream
http://repo.or.cz/w/git/mingw/j6t.git?a=shortlog;h=upstream

Junio, please do *not* pull/apply this series into your tree(s) until we
have verified that forks on repo.or.cz do not lose objects anymore when
branches are rewound.


What this series achieves:

- An almost complete set of git tools running natively on Windows.

- Functional git-gui and gitk.


What is missing:

- perl scripts don't work. We have a hack in the port tree, but I haven't
  yet taken the time to clean it up enough.

- The test suite does not pass because of missing features like symbolic
  links. Again we have adjusted the tests in the port tree so that the
  test suite can be completed unattended.


I've arranged the patches in a few subsets. They are different from what
Dscho had proposed some weeks ago when I announced the series for the
first time because I felt this topical partitioning makes more sense.


* Part 1: Get it going
01/40 Add compat/regex.[ch] and compat/fnmatch.[ch].
02/40 Compile some programs only conditionally.
03/40 Add target architecture MinGW.

With these patches we have a working git.exe that can successfully run
those builtins that need only read-access of the repository, like
git log, git diff, etc.

 7 files changed, 6222 insertions(+), 5 deletions(-)


* Part 2: Working locally is possible
04/40 Windows: Use the Windows style PATH separator ';'.
05/40 Windows: Strip ".exe" from the program name.
06/40 Windows: Implement a wrapper of the open() function.
07/40 Windows: A minimal implemention of getpwuid().
08/40 Windows: always chmod(, 0666) before unlink().
09/40 Windows: Work around misbehaved rename().
10/40 Windows: Treat Windows style path names.
11/40 Windows: Handle absolute paths in safe_create_leading_directories().
12/40 Windows: Implement gettimeofday().
13/40 Windows: Fix PRIuMAX definition.
14/40 Windows: Implement setitimer() and sigaction().
15/40 Windows: A work-around for a misbehaved vsnprintf.

Now builtins that write to the repository work as long as they don't need
to spawn secondary processes.

 10 files changed, 347 insertions(+), 20 deletions(-)


* Part 3: Shell scripts and start_command()
16/40 Windows: Wrap execve so that shell scripts can be invoked.
17/40 Windows: A pipe() replacement whose ends are not inherited to children.
18/40 Windows: Implement start_command().
19/40 Windows: Change the name of hook scripts to make them not executable.

Now scripted tools and the builtins and standalone programs work that
depend on start_command().

 5 files changed, 391 insertions(+), 16 deletions(-)


* Part 4: Remote connections
20/40 Windows: A rudimentary poll() emulation.
21/40 Windows: Disambiguate DOS style paths from SSH URLs.
22/40 Windows: Implement asynchronous functions as threads.
23/40 Windows: Local clone must use the drive letter in absolute paths.
24/40 Windows: Work around incompatible sort and find.
25/40 Windows: Implement a cpio emulation in git-clone.sh.
26/40 Windows: Implement wrappers for gethostbyname(), socket(), and connect().

Remote connections, both push and fetch, using local transport as well as
connections via ssh and native git protocol work.

 9 files changed, 233 insertions(+), 3 deletions(-)


* Part 5: Optimizations
27/40 Windows: Implement a custom spawnve().
28/40 Windows: Add a new lstat and fstat implementation based on Win32 API.
29/40 Windows: Use a customized struct stat that also has the st_blocks member.

 3 files changed, 370 insertions(+), 10 deletions(-)


* Part 6: Tie up loose ends
30/40 Turn builtin_exec_path into a function.
31/40 Compute the ultimate fallback for exec_path from the program invocation.
32/40 Windows: Use a relative default template_dir and ETC_GITCONFIG
33/40 When installing, be prepared that template_dir may be relative.
34/40 Windows: Make the pager work.
35/40 Windows: Work around an oddity when a pipe with no reader is written to.
36/40 Avoid the "dup dance" in wt_status_print_verbose() when possible.
37/40 Windows: Make 'git help -a' work.
38/40 Windows: TMP and TEMP environment variables specify a temporary directory.
39/40 Windows: Fix ntohl() related warnings about printf formatting
40/40 compat/pread.c: Add foward decl to fix warning

This fixes some final remaining oddities, minor missing features, and
works around differences between POSIX and Windows.

 11 files changed, 154 insertions(+), 21 deletions(-)


* Diffstat excluding 01/40 (which adds 5989 lines)

 Documentation/git.txt |    6 +-
 Makefile              |   48 +++-
 cache.h               |    4 +
 compat/mingw.c        | 1018 +++++++++++++++++++++++++++++++++++++++++++++++++
 connect.c             |    8 +-
 date.c                |    2 +-
 exec_cmd.c            |   43 ++-
 git-clone.sh          |   52 +++-
 git-compat-util.h     |  221 +++++++++++-
 git-sh-setup.sh       |   17 +
 git.c                 |   14 +
 gitk-git/Makefile     |    4 +
 gitk-git/gitk         |    1 +
 help.c                |   38 ++-
 pager.c               |   40 ++-
 path.c                |    7 +
 run-command.c         |  118 ++++++-
 run-command.h         |    5 +
 setup.c               |   59 +++-
 sha1_file.c           |   18 +-
 t/test-lib.sh         |   13 +
 templates/Makefile    |   16 +-
 upload-pack.c         |    2 +
 write_or_die.c        |    7 +-
 wt-status.c           |   12 +-
 25 files changed, 1713 insertions(+), 60 deletions(-)

-- Hannes
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux