Retire git-export.
git-export was done as a concept example on how easy it is to export the git data to something else. It's much less powerful than any number of trivial one-liner scripts now, and real exporters would not ever use git-export. It's obviously much less powerful than "git-whatchanged", or just about any combination of git-rev-list + git-diff-tree. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
01c6ad29bd
commit
0fe51391a8
1
.gitignore
vendored
1
.gitignore
vendored
@ -24,7 +24,6 @@ git-diff-helper
|
|||||||
git-diff-index
|
git-diff-index
|
||||||
git-diff-stages
|
git-diff-stages
|
||||||
git-diff-tree
|
git-diff-tree
|
||||||
git-export
|
|
||||||
git-fetch
|
git-fetch
|
||||||
git-fetch-pack
|
git-fetch-pack
|
||||||
git-format-patch
|
git-format-patch
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
git-export(1)
|
|
||||||
=============
|
|
||||||
v0.1, May 2005
|
|
||||||
|
|
||||||
NAME
|
|
||||||
----
|
|
||||||
git-export - Exports each commit and a diff against each of its parents
|
|
||||||
|
|
||||||
|
|
||||||
SYNOPSIS
|
|
||||||
--------
|
|
||||||
'git-export' top [base]
|
|
||||||
|
|
||||||
DESCRIPTION
|
|
||||||
-----------
|
|
||||||
Exports each commit and diff against each of its parents, between
|
|
||||||
top and base. If base is not specified it exports everything.
|
|
||||||
|
|
||||||
|
|
||||||
Author
|
|
||||||
------
|
|
||||||
Written by Linus Torvalds <torvalds@osdl.org>
|
|
||||||
|
|
||||||
Documentation
|
|
||||||
--------------
|
|
||||||
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
|
|
||||||
|
|
||||||
GIT
|
|
||||||
---
|
|
||||||
Part of the gitlink:git[7] suite
|
|
||||||
|
|
@ -118,9 +118,6 @@ gitlink:git-diff-stages[1]::
|
|||||||
gitlink:git-diff-tree[1]::
|
gitlink:git-diff-tree[1]::
|
||||||
Compares the content and mode of blobs found via two tree objects
|
Compares the content and mode of blobs found via two tree objects
|
||||||
|
|
||||||
gitlink:git-export[1]::
|
|
||||||
Exports each commit and a diff against each of its parents
|
|
||||||
|
|
||||||
gitlink:git-fsck-objects[1]::
|
gitlink:git-fsck-objects[1]::
|
||||||
Verifies the connectivity and validity of the objects in the database
|
Verifies the connectivity and validity of the objects in the database
|
||||||
Previously this command was known as git-fsck-cache.
|
Previously this command was known as git-fsck-cache.
|
||||||
|
2
Makefile
2
Makefile
@ -103,7 +103,7 @@ PROGRAMS = \
|
|||||||
git-checkout-index git-clone-pack git-commit-tree \
|
git-checkout-index git-clone-pack git-commit-tree \
|
||||||
git-convert-objects git-diff-files \
|
git-convert-objects git-diff-files \
|
||||||
git-diff-helper git-diff-index git-diff-stages \
|
git-diff-helper git-diff-index git-diff-stages \
|
||||||
git-diff-tree git-export git-fetch-pack git-fsck-objects \
|
git-diff-tree git-fetch-pack git-fsck-objects \
|
||||||
git-hash-object git-init-db \
|
git-hash-object git-init-db \
|
||||||
git-local-fetch git-ls-files git-ls-tree git-merge-base \
|
git-local-fetch git-ls-files git-ls-tree git-merge-base \
|
||||||
git-merge-index git-mktag git-pack-objects git-patch-id \
|
git-merge-index git-mktag git-pack-objects git-patch-id \
|
||||||
|
81
export.c
81
export.c
@ -1,81 +0,0 @@
|
|||||||
#include "cache.h"
|
|
||||||
#include "commit.h"
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Show one commit
|
|
||||||
*/
|
|
||||||
static void show_commit(struct commit *commit)
|
|
||||||
{
|
|
||||||
char cmdline[400];
|
|
||||||
char hex[100];
|
|
||||||
|
|
||||||
strcpy(hex, sha1_to_hex(commit->object.sha1));
|
|
||||||
printf("Id: %s\n", hex);
|
|
||||||
fflush(NULL);
|
|
||||||
sprintf(cmdline, "git-cat-file commit %s", hex);
|
|
||||||
system(cmdline);
|
|
||||||
if (commit->parents) {
|
|
||||||
char *against = sha1_to_hex(commit->parents->item->object.sha1);
|
|
||||||
printf("\n\n======== diff against %s ========\n", against);
|
|
||||||
fflush(NULL);
|
|
||||||
sprintf(cmdline, "git-diff-tree -p %s %s", against, hex);
|
|
||||||
system(cmdline);
|
|
||||||
}
|
|
||||||
printf("======== end ========\n\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Show all unseen commits, depth-first
|
|
||||||
*/
|
|
||||||
static void show_unseen(struct commit *top)
|
|
||||||
{
|
|
||||||
struct commit_list *parents;
|
|
||||||
|
|
||||||
if (top->object.flags & 2)
|
|
||||||
return;
|
|
||||||
top->object.flags |= 2;
|
|
||||||
parents = top->parents;
|
|
||||||
while (parents) {
|
|
||||||
show_unseen(parents->item);
|
|
||||||
parents = parents->next;
|
|
||||||
}
|
|
||||||
show_commit(top);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void export(struct commit *top, struct commit *base)
|
|
||||||
{
|
|
||||||
mark_reachable(&top->object, 1);
|
|
||||||
if (base)
|
|
||||||
mark_reachable(&base->object, 2);
|
|
||||||
show_unseen(top);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct commit *get_commit(unsigned char *sha1)
|
|
||||||
{
|
|
||||||
struct commit *commit = lookup_commit(sha1);
|
|
||||||
if (!commit->object.parsed) {
|
|
||||||
struct commit_list *parents;
|
|
||||||
|
|
||||||
if (parse_commit(commit) < 0)
|
|
||||||
die("unable to parse commit %s", sha1_to_hex(sha1));
|
|
||||||
parents = commit->parents;
|
|
||||||
while (parents) {
|
|
||||||
get_commit(parents->item->object.sha1);
|
|
||||||
parents = parents->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return commit;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
unsigned char base_sha1[20];
|
|
||||||
unsigned char top_sha1[20];
|
|
||||||
|
|
||||||
if (argc < 2 || argc > 4 ||
|
|
||||||
get_sha1(argv[1], top_sha1) ||
|
|
||||||
(argc == 3 && get_sha1(argv[2], base_sha1)))
|
|
||||||
usage("git-export top [base]");
|
|
||||||
export(get_commit(top_sha1), argc==3 ? get_commit(base_sha1) : NULL);
|
|
||||||
return 0;
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user