Re:[GSOC] [PROPOSAL v3] Draft of proposal for "Unify ref-filter formats with other pretty formats"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi, I have done some preparatory work. I read most part of the patch
"ref-filter: add new "signature" atom"[1] but the part of the test script is
left.
I plan to read details about test scripts if the previous work of the patch is
well down.
* My questions
** Are there more aspects I need to focus when reading other's
patches?
** Are there other patches necessary to read?


Thanks for all suggestions.
Below is what I grasp from ref-filter: add new "signature" atom patches. I will
put it on my blog site later.


* v1
** The goal of v1
Add "signature" atom with `grade`,`signer`, `key`, `fingerprint`,
`primarykeyfingerprint`, `trustlevel` as arguments.
To get constitutes for %GG, %G?, %GS, %GK, %GF, %GP, and %GT pretty formats.
** The approach
*** enum
atom_type; ATOM_SIGNATURE: used as the index of valid_atom array.
*** struct
used_atom; struct {...} signature: add signature atom and its options.
valid_atom ; [ATOM_SIGNATURE]: seems build a map between "signature" and
function "signature_atom_parser".
*** function
**** add
static int signature_atom_parser: Set "signature.option" according to args.
static void grab_signature: Set the result string in atom_value.value for
signature options. There are more details need to understand.
**** modify
static void grab_values: add grab_signature in case OBJ_COMMIT.
*** document
*** test scripts
** Others' comments on v1
*** Junio C Hamano
1. Lack motivation.
2. Need to deal with signed tag.
3. Improve the style of "if else".
4. Rename grab_signature to grab_commit_signature. This make easier for future
developers to understand and add "grab_tag_signature".
5. Add space between cast and value.
6. Check used-atom to make sure there is need to do signature processing.
7. A call to check_commit_signature() should have a matching call to
signature_check_clear().
*** Jeff King
1. Add an annotation for the unused parameter, which is necessary when
-Wunused-parameter is on.
2. In signature_atom_parser, return err_bad_arg for wrong arg. This make the
error message match the others.
* v2 seems meet some mistake about message ID
1. More detailed commit message.
2. Add parse_signature_option(), which return value for struct signature.option
or -1 when get wrong arg. This function is used in grab_signature() and
signature_atom_parser().
3. Modify signature_atom_parser(). Use parse_signature_option() to get opt and
return err_bad_arg for wrong arg.
4. Modify grab_signature(). Use parse_signature_option() to check name in
used_atom and use check_commit_signature() with signature_check_clear() only
once.
5. Add test for bare signature atom(%(signature)).
* v3 and v4
1. Remove test for bare signature atom because the result of the test is not
same on different platform.
** Junio C Hamano's comments
Avoid calling check_commit_signature() when no %(signature) atoms is used.
* v5
1. Add a signature_checked flag to avoid calling check_commit_signature()
unnecessarily.
2. Fix the test for bare signature atom(%(signature)) about trustdb.
** Junio C Hamano's comments
A question about differences between versions of GPG. It seems no relationship
with my work.
* View these patches a whole
** The general direction
1. Register a new signature and its options in enum atom_type and struct used
atom.
2. Define a foo_atom_parser() to convert string arg to int option.
3. Bind atom with its foo_atom_parser() in valid_atom.
4. Define a grab_foo() to set string s in struct atom_value according to option.
5. Insert the grab_foo() into grab_values() function.
** ls it possible to use the similar approach
Yes. I can follow the general idea of this patch. Of course, I need to finetune
the details according to the atom I work on.
* Else
check_commit_signature() is defined in commit.c.
What is GPG?
https://gnupg.org/
GnuPG allows you to encrypt and sign your data and communications.


[1] https://public-inbox.org/git/pull.1452.git.1672102523902.gitgitgadget@xxxxxxxxx/ 





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux