Git's Continuous Integration (CI) includes an Azure Pipeline that builds Git
on Linux, macOS and Windows, in the former two cases even in multiple
configurations (using GCC vs clang, 32-bit vs 64-bit, etc). On Windows, we
only build using GCC, using (a subset of) Git for Windows' SDK.

Recently, a patch series made it into Git that re-instates the ability to
generate project files for use with Visual Studio. The idea there being:
contributors can check out a special branch that has those generated files
in one generated commit on top of e.g. Git for Windows' master, allowing the
contributors to build Git in Visual Studio, without the need for downloading
Git for Windows' SDK (which weighs quite a bit: ~600MB download, ~2GB disk
footprint). The tests can then be run from a regular Git for Windows Bash.

This patch series adds that axis to Git's Azure Pipeline: the project files
are generated, MSBuild (which is kind of the command-line equivalent of
Visual Studio's "Build" operation) is used to build Git, and then a
parallelized test job runs the test suite in a Portable Git.

These patches are based on js/visual-studio.

Changes since v2:

 * The overflow check introduced in v1 was consolidated into a single
   helper.

Changes since v1:

 * "While at it", we now also check for overflows when doing that -1 -
   <unsigned> arithmetic.
 * The JUnit-style XML is finalized also in case that the script aborts e.g.
   due to an incorrect number of arguments in a test_expect_success call.

Johannes Schindelin (13):
  push: do not pretend to return `int` from `die_push_simple()`
  msvc: avoid using minus operator on unsigned types
  winansi: use FLEX_ARRAY to avoid compiler warning
  compat/win32/path-utils.h: add #include guards
  msvc: ignore some libraries when linking
  msvc: handle DEVELOPER=1
  msvc: work around a bug in GetEnvironmentVariable()
  vcxproj: only copy `git-remote-http.exe` once it was built
  vcxproj: include more generated files
  test-tool run-command: learn to run (parts of) the testsuite
  tests: let --immediate and --write-junit-xml play well together
  ci: really use shallow clones on Azure Pipelines
  ci: also build and test with MS Visual Studio on Azure Pipelines

 Makefile                                   |   4 +
 azure-pipelines.yml                        | 164 ++++++++++++++++++++-
 builtin/push.c                             |   4 +-
 cache.h                                    |  13 ++
 compat/mingw.c                             |   2 +
 compat/vcbuild/scripts/clink.pl            |  48 +++++-
 compat/win32/path-utils.h                  |   5 +
 compat/winansi.c                           |   2 +-
 config.mak.uname                           |  19 ++-
 contrib/buildsystems/Generators/Vcxproj.pm |   3 +
 read-cache.c                               |   4 +-
 sha1-lookup.c                              |   4 +-
 t/helper/test-run-command.c                | 153 +++++++++++++++++++
 t/test-lib.sh                              |  38 +++--
 14 files changed, 430 insertions(+), 33 deletions(-)


base-commit: aac6ff7b5beeea9bca66ecda6eec60fc1dd447ec
Published-As: 
https://github.com/gitgitgadget/git/releases/tag/pr-288%2Fdscho%2Fazure-pipelines-msvc-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git 
pr-288/dscho/azure-pipelines-msvc-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/288

Range-diff vs v2:

  1:  4d0b38125a =  1:  4d0b38125a push: do not pretend to return `int` from 
`die_push_simple()`
  2:  8800320590 <  -:  ---------- msvc: avoid using minus operator on unsigned 
types
  -:  ---------- >  2:  7fe2a85506 msvc: avoid using minus operator on unsigned 
types
  3:  8512a3e96d =  3:  e632a4eef4 winansi: use FLEX_ARRAY to avoid compiler 
warning
  4:  0345b08f54 =  4:  cd96d7ff70 compat/win32/path-utils.h: add #include 
guards
  5:  5add01f8ff =  5:  bf09257f65 msvc: ignore some libraries when linking
  6:  5c880f923e =  6:  39c707464c msvc: handle DEVELOPER=1
  7:  1f2245a228 =  7:  91b09cfdd8 msvc: work around a bug in 
GetEnvironmentVariable()
  8:  582b299634 =  8:  cca891450d vcxproj: only copy `git-remote-http.exe` 
once it was built
  9:  38ccf999e7 =  9:  e6e60b3c2b vcxproj: include more generated files
 10:  24b1c7bff3 = 10:  d2c4973431 test-tool run-command: learn to run (parts 
of) the testsuite
 11:  7be13d19e1 = 11:  0644a2f8da tests: let --immediate and --write-junit-xml 
play well together
 12:  bde1e8ef65 = 12:  4495c392fd ci: really use shallow clones on Azure 
Pipelines
 13:  7af1c01a08 = 13:  b1ff8eff4d ci: also build and test with MS Visual 
Studio on Azure Pipelines

-- 
gitgitgadget

Reply via email to