brian m. carlson 7bc341e21b git-compat-util: add a test balloon for C99 support
The C99 standard was released in January 1999, now 22 years ago.  It
provides a variety of useful features, including variadic arguments for
macros, declarations after statements, designated initializers, and a
wide variety of other useful features, many of which we already use.

We'd like to take advantage of these features, but we want to be
cautious.  As far as we know, all major compilers now support C99 or a
later C standard, such as C11 or C17.  POSIX has required C99 support as
a requirement for the 2001 revision, so we can safely assume any POSIX
system which we are interested in supporting has C99.

Even MSVC, long a holdout against modern C, now supports both C11 and
C17 with an appropriate update.  Moreover, even if people are using an
older version of MSVC on these systems, they will generally need some
implementation of the standard Unix utilities for the testsuite, and GNU
coreutils, the most common option, has required C99 since 2009.
Therefore, we can safely assume that a suitable version of GCC or clang
is available to users even if their version of MSVC is not sufficiently
capable.

Let's add a test balloon to git-compat-util.h to see if anyone is using
an older compiler.  We'll add a comment telling people how to enable
this functionality on GCC and Clang, even though modern versions of both
will automatically do the right thing, and ask people still experiencing
a problem to report that to us on the list.

Note that C89 compilers don't provide the __STDC_VERSION__ macro, so we
use a well-known hack of using "- 0".  On compilers with this macro, it
doesn't change the value, and on C89 compilers, the macro will be
replaced with nothing, and our value will be 0.

For sparse, we explicitly request the gnu99 style because we've
traditionally taken advantage of some GCC- and clang-specific extensions
when available and we'd like to retain the ability to do that.  sparse
also defaults to C89 without it, so things will fail for us if we don't.

Update the cmake configuration to require C11 for MSVC.  We do this
because this will make MSVC to use C11, since it does not explicitly
support C99.  We do this with a compiler options because setting the
C_STANDARD option does not work in our CI on MSVC and at the moment, we
don't want to require C11 for Unix compilers.

In the Makefile, don't set any compiler flags for the compiler itself,
since on some systems, such as FreeBSD, we actually need C11, and asking
for C99 causes things to fail to compile.  The error message should make
it obvious what's going wrong and allow a user to set the appropriate
option when building in the event they're using a Unix compiler that
doesn't support it by default.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-12-01 14:50:01 -08:00
2021-03-13 16:00:09 -08:00
2021-03-13 16:00:09 -08:00
2021-07-22 13:05:54 -07:00
2021-07-13 16:52:50 -07:00
2021-08-12 14:00:52 -07:00
2021-05-10 16:59:47 +09:00
2021-03-13 16:00:09 -08:00
2021-06-14 10:16:06 +09:00
2021-03-13 16:00:09 -08:00
2021-04-27 16:31:39 +09:00
2021-05-07 12:47:41 +09:00
2021-07-13 16:52:50 -07:00
2021-03-13 16:00:09 -08:00
2021-07-16 17:42:53 -07:00
2021-07-16 17:42:53 -07:00
2021-03-13 16:00:09 -08:00
2021-08-06 12:52:15 -07:00
2021-08-04 13:28:52 -07:00
2021-06-14 13:33:27 +09:00
2021-07-30 12:14:27 -07:00
2021-07-28 13:17:57 -07:00
2021-08-16 12:15:44 -07:00
2021-07-13 16:52:53 -07:00
2021-03-13 16:00:09 -08:00
2021-03-13 16:00:09 -08:00
2021-07-28 13:17:59 -07:00
2021-03-13 16:00:09 -08:00
2021-03-13 16:00:09 -08:00
2021-07-30 12:14:27 -07:00
2021-07-28 13:17:59 -07:00
2021-03-13 16:00:09 -08:00
2021-04-27 16:31:39 +09:00
2021-07-28 13:17:58 -07:00
2021-03-13 16:00:09 -08:00
2021-04-08 13:23:25 -07:00
2021-03-13 16:00:09 -08:00
2021-05-04 11:52:02 +09:00
2021-03-13 16:00:09 -08:00
2021-08-04 13:28:52 -07:00
2021-08-04 13:28:52 -07:00
2021-03-13 16:00:09 -08:00
2021-10-12 13:51:59 -07:00
2021-04-14 13:47:54 -07:00
2021-07-28 13:17:59 -07:00
2021-09-20 11:25:01 -07:00
2021-05-04 12:09:43 +09:00
2021-07-16 17:42:53 -07:00
2021-05-04 11:52:02 +09:00
2021-05-04 11:52:02 +09:00

Build status

Git - fast, scalable, distributed revision control system

Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals.

Git is an Open Source project covered by the GNU General Public License version 2 (some parts of it are under different licenses, compatible with the GPLv2). It was originally written by Linus Torvalds with help of a group of hackers around the net.

Please read the file INSTALL for installation instructions.

Many Git online resources are accessible from https://git-scm.com/ including full documentation and Git related tools.

See Documentation/gittutorial.txt to get started, then see Documentation/giteveryday.txt for a useful minimum set of commands, and Documentation/git-<commandname>.txt for documentation of each command. If git has been correctly installed, then the tutorial can also be read with man gittutorial or git help tutorial, and the documentation of each command with man git-<commandname> or git help <commandname>.

CVS users may also want to read Documentation/gitcvs-migration.txt (man gitcvs-migration or git help cvs-migration if git is installed).

The user discussion and development of Git take place on the Git mailing list -- everyone is welcome to post bug reports, feature requests, comments and patches to git@vger.kernel.org (read Documentation/SubmittingPatches for instructions on patch submission). To subscribe to the list, send an email with just "subscribe git" in the body to majordomo@vger.kernel.org. The mailing list archives are available at https://lore.kernel.org/git/, http://marc.info/?l=git and other archival sites.

Issues which are security relevant should be disclosed privately to the Git Security mailing list git-security@googlegroups.com.

The maintainer frequently sends the "What's cooking" reports that list the current status of various development topics to the mailing list. The discussion following them give a good reference for project status, development direction and remaining tasks.

The name "git" was given by Linus Torvalds when he wrote the very first version. He described the tool as "the stupid content tracker" and the name as (depending on your mood):

  • random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of "get" may or may not be relevant.
  • stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.
  • "global information tracker": you're in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.
  • "goddamn idiotic truckload of sh*t": when it breaks
Description
No description provided
Readme 235 MiB
Languages
C 50.1%
Shell 38.4%
Perl 5.1%
Tcl 3.3%
Python 0.8%
Other 2%