Here is a "feature" command for streams to use to require support for the notemodify (N) command. Support for importing notes was added to git fast-import quite a while ago (v1.6.6-rc0~21^2~8, 2009-10-09), before the 'feature' facility was introduced (v1.7.0-rc0~95^2~4, fast-import: add feature command, 2009-12-04) so for compatibility with older git versions, authors of existing frontends should not start using the "feature notes" command. Most git versions in wide use support notemodify already. The purpose of the "feature notes" declaration is instead to distinguish between git and fast-import backends that do not support notemodify. In git "feature notes" will be a no-op while in other current fast-import backends it will error out with a clear error message. Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- Still to do: the documentation does not hint at the point mentioned in paragraphs 2 and 3 above. Ideas for wording? Aside from that, I think this is ready. Thanks for reading. Documentation/git-fast-import.txt | 12 +++++++----- fast-import.c | 6 ++++-- t/t9301-fast-import-notes.sh | 1 + 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Documentation/git-fast-import.txt b/Documentation/git-fast-import.txt index 086b14f..2393252 100644 --- a/Documentation/git-fast-import.txt +++ b/Documentation/git-fast-import.txt @@ -942,11 +942,13 @@ import-marks:: any "feature import-marks" command in the stream. cat-blob:: - Ignored. Versions of fast-import not supporting the - "cat-blob" command will exit with a message indicating so. - This lets the import error out early with a clear message, - rather than wasting time on the early part of an import - before the unsupported command is detected. + Require that the backend support the 'cat-blob' command. + Versions of fast-import not supporting the 'cat-blob' + command will exit with a message indicating so. + +notes:: + Require that the backend support the 'notemodify' (N) + subcommand to the 'commit' command. `option` ~~~~~~~~ diff --git a/fast-import.c b/fast-import.c index 60f26fe..bf2f9f8 100644 --- a/fast-import.c +++ b/fast-import.c @@ -2983,14 +2983,16 @@ static int parse_one_feature(const char *feature, int from_stream) option_import_marks(feature + 13, from_stream); } else if (!prefixcmp(feature, "export-marks=")) { option_export_marks(feature + 13); - } else if (!strcmp(feature, "cat-blob")) { - ; /* Don't die - this feature is supported */ } else if (!prefixcmp(feature, "relative-marks")) { relative_marks_paths = 1; } else if (!prefixcmp(feature, "no-relative-marks")) { relative_marks_paths = 0; } else if (!prefixcmp(feature, "force")) { force_update = 1; + } + /* These features are present; don't error out for them. */ + else if (!strcmp(feature, "cat-blob")) { + } else if (!strcmp(feature, "notes")) { } else { return 0; } diff --git a/t/t9301-fast-import-notes.sh b/t/t9301-fast-import-notes.sh index 7cf8cd8..463254c 100755 --- a/t/t9301-fast-import-notes.sh +++ b/t/t9301-fast-import-notes.sh @@ -120,6 +120,7 @@ test_expect_success 'add notes with simple M command' ' test_tick cat >input <<INPUT_END +feature notes commit refs/notes/test committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE data <<COMMIT -- 1.7.2.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html