diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2008-07-19 16:21:24 +0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-07-19 11:25:51 -0700 |
commit | 03db4525d38119f7778d6e9117f27c47db8466d4 (patch) | |
tree | ee8126cbb922debfe445a54658c5a57dca4cc3ca /fast-import.c | |
parent | 4a3fedd5976ae9175cc418876d17ca568278b426 (diff) | |
download | git-03db4525d38119f7778d6e9117f27c47db8466d4.tar.gz |
Support gitlinks in fast-import.
Currently fast-import/export cannot be used for
repositories with submodules. This patch extends
the relevant programs to make them correctly
process gitlinks.
Links can be represented by two forms of the
Modify command:
M 160000 SHA1 some/path
which sets the link target explicitly, or
M 160000 :mark some/path
where the mark refers to a commit. The latter
form can be used by importing tools to build
all submodules simultaneously in one physical
repository, and then simply fetch them apart.
Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'fast-import.c')
-rw-r--r-- | fast-import.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/fast-import.c b/fast-import.c index c4d054ecc7..7089e6f9e6 100644 --- a/fast-import.c +++ b/fast-import.c @@ -1868,6 +1868,7 @@ static void file_change_m(struct branch *b) case S_IFREG | 0644: case S_IFREG | 0755: case S_IFLNK: + case S_IFGITLINK: case 0644: case 0755: /* ok */ @@ -1900,7 +1901,20 @@ static void file_change_m(struct branch *b) p = uq.buf; } - if (inline_data) { + if (S_ISGITLINK(mode)) { + if (inline_data) + die("Git links cannot be specified 'inline': %s", + command_buf.buf); + else if (oe) { + if (oe->type != OBJ_COMMIT) + die("Not a commit (actually a %s): %s", + typename(oe->type), command_buf.buf); + } + /* + * Accept the sha1 without checking; it expected to be in + * another repository. + */ + } else if (inline_data) { static struct strbuf buf = STRBUF_INIT; if (p != uq.buf) { |