Merge branch 'jc/signed-fast-export-is-experimental'
Mark a new feature added during this cycle as experimental and fix its default so that existing users of the fast-export command is not broken. * jc/signed-fast-export-is-experimental: fast-export: --signed-commits is experimentalmaint
commit
bbe8a3723b
|
|
@ -102,7 +102,9 @@ Performance, Internal Implementation, Development Support etc.
|
||||||
* "git fsck" becomes more careful when checking the refs.
|
* "git fsck" becomes more careful when checking the refs.
|
||||||
|
|
||||||
* "git fast-export | git fast-import" learns to deal with commit and
|
* "git fast-export | git fast-import" learns to deal with commit and
|
||||||
tag objects with embedded signatures a bit better.
|
tag objects with embedded signatures a bit better. This is highly
|
||||||
|
experimental and the format of the data stream may change in the
|
||||||
|
future without compatibility guarantees.
|
||||||
|
|
||||||
* The code paths to check whether a refname X is available (by seeing
|
* The code paths to check whether a refname X is available (by seeing
|
||||||
if another ref X/Y exists, etc.) have been optimized.
|
if another ref X/Y exists, etc.) have been optimized.
|
||||||
|
|
|
||||||
|
|
@ -46,14 +46,12 @@ resulting tag will have an invalid signature.
|
||||||
|
|
||||||
--signed-commits=(verbatim|warn-verbatim|warn-strip|strip|abort)::
|
--signed-commits=(verbatim|warn-verbatim|warn-strip|strip|abort)::
|
||||||
Specify how to handle signed commits. Behaves exactly as
|
Specify how to handle signed commits. Behaves exactly as
|
||||||
'--signed-tags', but for commits. Default is 'abort'.
|
'--signed-tags', but for commits. Default is 'strip', which
|
||||||
|
is the same as how earlier versions of this command without
|
||||||
|
this option behaved.
|
||||||
+
|
+
|
||||||
Earlier versions this command that did not have '--signed-commits'
|
NOTE: This is highly experimental and the format of the data stream may
|
||||||
behaved as if '--signed-commits=strip'. As an escape hatch for users
|
change in the future without compatibility guarantees.
|
||||||
of tools that call 'git fast-export' but do not yet support
|
|
||||||
'--signed-commits', you may set the environment variable
|
|
||||||
'FAST_EXPORT_SIGNED_COMMITS_NOABORT=1' in order to change the default
|
|
||||||
from 'abort' to 'warn-strip'.
|
|
||||||
|
|
||||||
--tag-of-filtered-object=(abort|drop|rewrite)::
|
--tag-of-filtered-object=(abort|drop|rewrite)::
|
||||||
Specify how to handle tags whose tagged object is filtered out.
|
Specify how to handle tags whose tagged object is filtered out.
|
||||||
|
|
|
||||||
|
|
@ -523,6 +523,9 @@ that signs the commit data.
|
||||||
Here <alg> specifies which hashing algorithm is used for this
|
Here <alg> specifies which hashing algorithm is used for this
|
||||||
signature, either `sha1` or `sha256`.
|
signature, either `sha1` or `sha256`.
|
||||||
|
|
||||||
|
NOTE: This is highly experimental and the format of the data stream may
|
||||||
|
change in the future without compatibility guarantees.
|
||||||
|
|
||||||
`encoding`
|
`encoding`
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
The optional `encoding` command indicates the encoding of the commit
|
The optional `encoding` command indicates the encoding of the commit
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ enum sign_mode { SIGN_ABORT, SIGN_VERBATIM, SIGN_STRIP, SIGN_WARN_VERBATIM, SIGN
|
||||||
|
|
||||||
static int progress;
|
static int progress;
|
||||||
static enum sign_mode signed_tag_mode = SIGN_ABORT;
|
static enum sign_mode signed_tag_mode = SIGN_ABORT;
|
||||||
static enum sign_mode signed_commit_mode = SIGN_ABORT;
|
static enum sign_mode signed_commit_mode = SIGN_STRIP;
|
||||||
static enum tag_of_filtered_mode { TAG_FILTERING_ABORT, DROP, REWRITE } tag_of_filtered_mode = TAG_FILTERING_ABORT;
|
static enum tag_of_filtered_mode { TAG_FILTERING_ABORT, DROP, REWRITE } tag_of_filtered_mode = TAG_FILTERING_ABORT;
|
||||||
static enum reencode_mode { REENCODE_ABORT, REENCODE_YES, REENCODE_NO } reencode_mode = REENCODE_ABORT;
|
static enum reencode_mode { REENCODE_ABORT, REENCODE_YES, REENCODE_NO } reencode_mode = REENCODE_ABORT;
|
||||||
static int fake_missing_tagger;
|
static int fake_missing_tagger;
|
||||||
|
|
@ -1269,7 +1269,6 @@ int cmd_fast_export(int argc,
|
||||||
const char *prefix,
|
const char *prefix,
|
||||||
struct repository *repo UNUSED)
|
struct repository *repo UNUSED)
|
||||||
{
|
{
|
||||||
const char *env_signed_commits_noabort;
|
|
||||||
struct rev_info revs;
|
struct rev_info revs;
|
||||||
struct commit *commit;
|
struct commit *commit;
|
||||||
char *export_filename = NULL,
|
char *export_filename = NULL,
|
||||||
|
|
@ -1327,10 +1326,6 @@ int cmd_fast_export(int argc,
|
||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage_with_options (fast_export_usage, options);
|
usage_with_options (fast_export_usage, options);
|
||||||
|
|
||||||
env_signed_commits_noabort = getenv("FAST_EXPORT_SIGNED_COMMITS_NOABORT");
|
|
||||||
if (env_signed_commits_noabort && *env_signed_commits_noabort)
|
|
||||||
signed_commit_mode = SIGN_WARN_STRIP;
|
|
||||||
|
|
||||||
/* we handle encodings */
|
/* we handle encodings */
|
||||||
git_config(git_default_config, NULL);
|
git_config(git_default_config, NULL);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -299,22 +299,10 @@ test_expect_success GPG 'set up signed commit' '
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success GPG 'signed-commits default' '
|
test_expect_success GPG 'signed-commits default is same as strip' '
|
||||||
|
git fast-export --reencode=no commit-signing >out1 2>err &&
|
||||||
sane_unset FAST_EXPORT_SIGNED_COMMITS_NOABORT &&
|
git fast-export --reencode=no --signed-commits=strip commit-signing >out2 &&
|
||||||
test_must_fail git fast-export --reencode=no commit-signing &&
|
test_cmp out1 out2
|
||||||
|
|
||||||
FAST_EXPORT_SIGNED_COMMITS_NOABORT=1 git fast-export --reencode=no commit-signing >output 2>err &&
|
|
||||||
! grep ^gpgsig output &&
|
|
||||||
grep "^encoding ISO-8859-1" output &&
|
|
||||||
test -s err &&
|
|
||||||
sed "s/commit-signing/commit-strip-signing/" output | (
|
|
||||||
cd new &&
|
|
||||||
git fast-import &&
|
|
||||||
STRIPPED=$(git rev-parse --verify refs/heads/commit-strip-signing) &&
|
|
||||||
test $COMMIT_SIGNING != $STRIPPED
|
|
||||||
)
|
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success GPG 'signed-commits=abort' '
|
test_expect_success GPG 'signed-commits=abort' '
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue