Browse Source

[PATCH] Add git-var a tool for reading interesting git variables.

Sharing code between shell scripts and C is a challenge.  The program
git-var allows us to have a set of named values that a shell script can
interrogate and a normal C program can simply call the functions that
compute them.  Allowing sharing when computing plain test values.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
maint
Eric W. Biederman 20 years ago committed by Linus Torvalds
parent
commit
aed022ab4c
  1. 60
      Documentation/git-var.txt
  2. 3
      Documentation/git.txt
  3. 3
      Makefile
  4. 65
      var.c

60
Documentation/git-var.txt

@ -0,0 +1,60 @@ @@ -0,0 +1,60 @@
git-var(1)
==================
v0.1, July 2005

NAME
----
git-var - Print the git users identity


SYNOPSIS
--------
git-var [ -l | <variable> ]

DESCRIPTION
-----------
Prints a git logical variable.

-l causes the logical variables to be listed.

EXAMPLE
--------
$git-var GIT_AUTHOR_IDENT

Eric W. Biederman <ebiederm@lnxi.com> 1121223278 -0600


VARIABLES
----------
GIT_AUTHOR_IDENT
The author of a piece of code.

GIT_COMMITTER_IDENT
The person who put a piece of code into git.

Diagnostics
-----------
You don't exist. Go away!::
The passwd(5) gecos field couldn't be read
Your parents must have hated you!::
The password(5) gecos field is longer than a giant static buffer.
Your sysadmin must hate you!::
The password(5) name field is longer than a giant static buffer.

See Also
--------
link:git-commit-tree.html[git-commit-tree]
link:git-tag-script.html[git-tag-script]

Author
------
Written by Eric Biederman <ebiederm@xmission.com>

Documentation
--------------
Documentation by Eric Biederman and the git-list <git@vger.kernel.org>.

GIT
---
Part of the link:git.html[git] suite

3
Documentation/git.txt

@ -111,6 +111,9 @@ link:git-tar-tree.html[git-tar-tree]:: @@ -111,6 +111,9 @@ link:git-tar-tree.html[git-tar-tree]::
link:git-unpack-file.html[git-unpack-file]::
Creates a temporary file with a blob's contents

link:git-var.html[git-var]::
Displays a git logical variable

link:git-verify-pack.html[git-verify-pack]::
Validates packed GIT archive files


3
Makefile

@ -48,7 +48,7 @@ PROG= git-update-cache git-diff-files git-init-db git-write-tree \ @@ -48,7 +48,7 @@ PROG= git-update-cache git-diff-files git-init-db git-write-tree \
git-diff-stages git-rev-parse git-patch-id git-pack-objects \
git-unpack-objects git-verify-pack git-receive-pack git-send-pack \
git-prune-packed git-fetch-pack git-upload-pack git-clone-pack \
git-show-index git-daemon
git-show-index git-daemon git-var

all: $(PROG)

@ -148,6 +148,7 @@ git-receive-pack: receive-pack.c @@ -148,6 +148,7 @@ git-receive-pack: receive-pack.c
git-send-pack: send-pack.c
git-prune-packed: prune-packed.c
git-fetch-pack: fetch-pack.c
git-var: var.c

git-http-pull: LIBS += -lcurl
git-rev-list: LIBS += -lssl

65
var.c

@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
/*
* GIT - The information manager from hell
*
* Copyright (C) Eric Biederman, 2005
*/
#include "cache.h"
#include <stdio.h>
#include <errno.h>
#include <string.h>

static char *var_usage = "git-var [-l | <variable>]";

struct git_var {
const char *name;
char *(*read)(void);
};
static struct git_var git_vars[] = {
{ "GIT_COMMITTER_IDENT", git_committer_info },
{ "GIT_AUTHOR_IDENT", git_author_info },
{ "", NULL },
};

static void list_vars(void)
{
struct git_var *ptr;
for(ptr = git_vars; ptr->read; ptr++) {
printf("%s=%s\n", ptr->name, ptr->read());
}
}

static const char *read_var(const char *var)
{
struct git_var *ptr;
const char *val;
val = NULL;
for(ptr = git_vars; ptr->read; ptr++) {
if (strcmp(var, ptr->name) == 0) {
val = ptr->read();
break;
}
}
return val;
}

int main(int argc, char **argv)
{
const char *val;
if (argc != 2) {
usage(var_usage);
}
setup_ident();
val = NULL;

if (strcmp(argv[1], "-l") == 0) {
list_vars();
return 0;
}
val = read_var(argv[1]);
if (!val)
usage(var_usage);
printf("%s\n", val);
return 0;
}
Loading…
Cancel
Save