Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
The git-update-server-info command prepares informational files to help clients discover the contents of a repository, and pull from it via a dumb transport protocols. Currently, the following files are produced. - The $repo/info/refs file lists the name of heads and tags available in the $repo/refs/ directory, along with their SHA1. This can be used by git-ls-remote command running on the client side. - The $repo/info/rev-cache file describes the commit ancestry reachable from references in the $repo/refs/ directory. This file is in an append-only binary format to make the server side friendly to rsync mirroring scheme, and can be read by git-show-rev-cache command. - The $repo/objects/info/pack file lists the name of the packs available, the interdependencies among them, and the head commits and tags contained in them. Along with the other two files, this is designed to help clients to make smart pull decisions. The git-receive-pack command is changed to invoke it at the end, so just after a push to a public repository finishes via "git push", the server info is automatically updated. In addition, building of the rev-cache file can be done by a standalone git-build-rev-cache command separately. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
- Loading branch information
Junio C Hamano
authored and
Linus Torvalds
committed
Jul 24, 2005
1 parent
0fec082
commit 8f3f9b0
Showing
9 changed files
with
1,025 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
#include "refs.h" | ||
#include "cache.h" | ||
#include "commit.h" | ||
#include "rev-cache.h" | ||
|
||
static void process_head_list(int verbose) | ||
{ | ||
char buf[512]; | ||
|
||
while (fgets(buf, sizeof(buf), stdin)) { | ||
unsigned char sha1[20]; | ||
struct commit *commit; | ||
|
||
if (get_sha1_hex(buf, sha1)) { | ||
error("ignoring: %s", buf); | ||
continue; | ||
} | ||
if (!(commit = lookup_commit_reference(sha1))) { | ||
error("not a commit: %s", sha1_to_hex(sha1)); | ||
continue; | ||
} | ||
record_rev_cache(commit->object.sha1, verbose ? stderr : NULL); | ||
} | ||
} | ||
|
||
|
||
static const char *build_rev_cache_usage = | ||
"git-build-rev-cache <rev-cache-file> < list-of-heads"; | ||
|
||
int main(int ac, char **av) | ||
{ | ||
int verbose = 0; | ||
const char *path; | ||
|
||
while (1 < ac && av[1][0] == '-') { | ||
if (!strcmp(av[1], "-v")) | ||
verbose = 1; | ||
else | ||
usage(build_rev_cache_usage); | ||
ac--; av++; | ||
} | ||
|
||
if (ac != 2) | ||
usage(build_rev_cache_usage); | ||
|
||
path = av[1]; | ||
|
||
/* read existing rev-cache */ | ||
read_rev_cache(path, NULL, 0); | ||
|
||
process_head_list(verbose); | ||
|
||
/* update the rev-cache database by appending newly found one to it */ | ||
write_rev_cache(path, path); | ||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.