| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Contributor has requested they be excluded from our contributor
databases.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
updateAUTHORS.pl now can replace all the capabilities of
checkAUTHORS.pl, and checkAUTHORS.pl has a slightly different idea of
what needs to be validated, and is not aware of the
Porting/exclude_contrib.txt. Instead of teaching it to be aware and
maintaining two tools this drops checkAUTHORS.pl
In the process we move the logic for t/porting/pending-author.t into
t/porting/authors.t, by letting updateAUTHORS.pl do it as well. This is
helpful because updateAUTHORS.pl contains similar core git logic so that
it can implement some of its options.
|
|
|
|
|
|
|
|
|
| |
With the removal of the redundant data from .mailmap we lacked a way to
rename an author properly. Previously someone could manually update a
name or email in AUTHORS files and things would "just work" as the
.mailmap file would tell us the old mapping. Now we have removed those
mappings we need a way to easily rename someones canonical data. This
also means manually changing the AUTHORS file is now a problem.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A number of devs have noted and raised concerns that having .mailmap
entries where the LHS and RHS of the entry is redundant. A few have also
expressed the view that this exposes unnecessarily exposes their email
address in an easily harvestible form.
On the technical level as far as git specifically is concerned it is
true this data is redundant, as git uses .mailmap to transform user data
that match the RHS of an entry into the value on LHS, and when they are
the same obviously it is a no-op. However on the technical level for our
infra these entries are not redundant. We can use them to identify and
correctly respond to many cases of manual update of the AUTHORS file,
for instance changing ones preferred name. With the .mailmap entries we
have the data to identify the old preferred name, and join it together
with the unchanged email for the user and then automatically update
their .mailmap entries. This is why these entries were created
originally.
However, I believe that this functionality is not useful enough to
require us to have discussions with contributors on this subject on a
regular basis. We can add command line options that allow people to
change the AUTHORS file and the .mailmap file properly, so we can drop
the "redundant" data and avoid the need to talk about why it is there.
The required functionality for changing names will come in a follow up
patch in this PR.
|
|
|
|
|
| |
Improved POD verbiage. Explain how to exclude people in a more friendly
way. Various other pod cleanups and improvements.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This emulates the test feature in checkAUTHORS.pl and in
t/porting/pending-author.t which overlaps with the tests that
checkAUTHORS.pl does on behalf of t/porting/authors.t
We test that the .mailmap and AUTHORS files are up to date. If the
working directory is not clean (eg git status --porcelain returns a non
empty list of files) then we also validate the git credentials in use
to make sure that if the changes were applied we would also still pass
the test.
The script implements the same logic that `git commit` uses to decide
what identity a commit would use with the exception of the last resort
measures git undertakes to use the hostname and similar files.
|
|
|
|
|
| |
The blurb mentions checkAUTHORS.pl, and we should point people at
updateAUTHORS.pl instead.
|
|
|
|
|
|
| |
This is helpful when adding a new option to updateAUTHORS.pl. It not
really meant for users, more for someone working on the tool itself, and
thus is not documented.
|
|
|
|
| |
Use consistent hash key and list sort orders.
|
|
|
|
|
|
|
|
| |
Binmode the pipe, use tabs not nulls, and on windows use double quotes
not single quotes for arguments to subprocess scripts.
Since we weren't using Porting/updateAUTHORS.pm as part of our test
pipeline we didn't know it didnt work on Windows builds.
|
|
|
|
|
|
| |
Adds the --stats, --files, --who, and related options similar to
what checkAUTHORS.pl offers. See perldoc Porting/updateAUTHORS.pl for
the list of options it supports.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This add a new file Porting/exclude_contrib.txt to hold a list
of base64 SHA-256 digests of the user name and email who should be
excluded.
This adds the options
--exclude-me
--exclude-contrib=NAME_AND_EMAIL
--exclude-missing
to add exclusions in different ways. --exclude-me uses the git
credentials for the current user, --exclude-contrib expects a name
and email, and --exclude-missing excludes someone who is missing from
the change log.
When excluding someone their name will be removed from AUTHORS if it is
already listed, and the relevant entries to .mailmap will be removed,
and if necessary additional exclusion entries will be added for any of
their old identities which were mentioned in .mailmap.
This feature will be used in a later patch to resolve GH issue #20010.
|
|
|
|
|
| |
Exactly what "update_authors" does is a little less clear than what
"update_authors_file" does.
|
|
|
|
|
|
| |
checkAUTHORS.pl supports specifying a commit range, and we actually
need it even more as we do not support piping from git log (as our
git log format is ungainly) so this allows us to be feature compatible.
|
|
|
|
|
| |
If we want to just check if the files are up to date we dont want
to have to write to the disk. We will use this in a future patch.
|
|
|
|
| |
Makes it easy to add diagnostics while developing.
|
|
|
|
|
| |
This makes it easier and simpler to add new options and
extend the script in the future.
|
|
|
|
|
|
|
|
|
|
| |
It is much cleaner when the object stores its state internally. That
way we don't have to adjust the transitive caller graph when we need
something new.
Also normalize some var names, we were using "author_info" and
"authors_info" in a way that was confusing, now it is consistently
"author_info".
|
|
|
|
|
|
|
|
| |
As we extend the module logic mixing the docs for the module and the
command line tool becomes problematic, and it is pain passing around the
state via distinct variables. This is first step to moving to a simpler
model. We don't make much use of the OO in this patch at all, that will
come in a follow up patch.
|
|
|
|
|
|
| |
We can at least make sure it compiles... Later we can build on this, for
now this sanity checks that we haven't *completely* broken the script
while we refactor it.
|
|
|
|
|
|
|
|
|
|
|
|
| |
The existing name is confusing to me, especially when the workflow gets
skipped so change the name to something more intuitive.
We also change it to respect .mailmap by using %aN and %aE instead of
%an and %ae.
We also change it to use ".." and "..." in the git log statement, and
use `sort | uniq -c` instead of `sort -u`, it is helpful to see counts.
We also show the resolved begin and end commits.
|
|
|
|
| |
they are not pod, but rather editor droppings.
|
|
|
|
|
|
|
| |
A. Sinan Unur was listed twice in AUTHORS, under Sinan Unur
as well. This removes the dupe.
This is in prep for various changes to the updateAUTHORS.pl process.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changes utf8_to_bytes() to do a per-word initial scan to see if the
source is actually downgradable, before starting the conversion. This
is significantly faster than the current per-character scan. However,
the speed advantage evaporates in doing the actual conversion to being a
wash with the previous scheme.
Thus it finds out quicker if the source is downgradable.
cache grind yields this, based on a 100K character string; the
non-downgradable one has the next character after that be the only one
that's too large.:
Key:
Ir Instruction read
Dr Data read
Dw Data write
COND conditional branches
IND indirect branches
_m branch predict miss
_m1 level 1 cache miss
_mm last cache (e.g. L3) miss
- indeterminate percentage (e.g. 1/0)
The numbers represent relative counts per loop iteration, compared to
blead at 100.0%.
Higher is better: for example, using half as many instructions gives 200%,
while using twice as many gives 50%.
unicode::bytes_to_utf8_legal_API_test
Downgrading 100K valid characters
blead proposed
------ ------
Ir 100.00 99.99
Dr 100.00 100.03
Dw 100.00 100.04
COND 100.00 100.05
IND 100.00 100.00
COND_m 100.00 87.25
IND_m 100.00 100.00
Ir_m1 100.00 123.25
Dr_m1 100.00 100.18
Dw_m1 100.00 99.94
Ir_mm 100.00 100.00
Dr_mm 100.00 100.00
Dw_mm 100.00 100.00
unicode::bytes_to_utf8_illegal
Finding too high a character after 100K valid ones
blead fast
------ ------
Ir 100.00 188.91
Dr 100.00 179.77
Dw 100.00 66.75
COND 100.00 278.47
IND 100.00 100.00
COND_m 100.00 88.71
IND_m 100.00 100.00
Ir_m1 100.00 121.86
Dr_m1 100.00 100.01
Dw_m1 100.00 100.03
Ir_mm 100.00 100.00
Dr_mm 100.00 100.00
Dw_mm 100.00 100.00
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
BinGOs told me that this updated was all that was required,
and I chose to trust him.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265950
We do not yet know the extent of the problem.
|
|
|
|
|
|
|
|
| |
This fixes #20090
These symbols were changed by fcbef0e to be defined in more
Configurations, but as @bram-perl pointed out, makedef.pl didn't also
change to export them in those expanded situations.
|
|
|
|
|
|
|
|
|
| |
This unused variable dates back to when the file was first added. The code
was structured as a static C wrapper emulating the dlopen() API with the
native APIs, and then a copy of the existing XS code that called dlopen().
However, there is (and was) no need to keep it exactly this way, as the
wrapper is only visible inside this file, meaning that it does not need to
conform to any externally defined prototype.
|
|
|
|
| |
real module version
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
git-rev-parse HEAD^2` was used to detect if HEAD was a merge commit.
When HEAD is not a merge commit then HEAD^2 produces an error;
When HEAD is a merge commit then HEAD^2 points to the second parent.
The problem was that `git rev-parse "HEAD^2"` also produced output on STDOUT
which caused `$revision_range` to be set to something bogus.
Example:
$ git rev-parse HEAD^2 2>/dev/null ; echo $?
HEAD^2
128
$ git log HEAD^1..HEAD^2
fatal: ambiguous argument 'HEAD^1..HEAD^2': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
The fix is to use --verify which doesn't give output on STDOUT for something invalid.
It does print an error on STDERR (for invalid things) which can be silenced using -q
$ git rev-parse --verify HEAD^2
fatal: Needed a single revision
$ git rev-parse -q --verify HEAD^2
$
For an actual merge commit:
$ git rev-parse -q --verify e91a97a^2
bee6601bbf238b5366ce11cd41f6b095bfeebfd8
(i.e. working as expected)
|
|
|
|
|
|
|
|
|
| |
These messages are obsolete. They exist to tell perl not to complain
when it finds a matching diagnostic that isn't listed in perldiag. But
the messages don't get generated any more, so running the test without
them still passes.
Many of these were spotted by @bram-perl
|
|
|
|
|
| |
These are clear enough without explanation in perldiag. There's a bunch
of them that can be represented by just one.
|
|
|
|
|
| |
These are clear enough without explanation in perldiag. There's a bunch
of them that can really be represented by just one.
|
|
|
|
| |
This diagnostic is the outlier of all the other ones.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When running 'make_patchnum.pl' from a subdir then 'make_patchnum.pl'
failed to write a proper lib/Config_git.pl. That is: all values in it
were set to the empty string instead to the actual values.
Example:
$ cd perl5
$ mkdir foo && cd $foo
$ ../miniperl -I../lib ../make_patchnum.pl
Updating 'git_version.h' and 'lib/Config_git.pl'
$ cat ../lib/Config_git.pl
######################################################################
# WARNING: 'lib/Config_git.pl' is generated by make_patchnum.pl
# DO NOT EDIT DIRECTLY - edit make_patchnum.pl instead
######################################################################
$Config::Git_Data=<<'ENDOFGIT';
git_commit_id=''
git_describe=''
git_branch=''
git_uncommitted_changes=''
git_commit_id_title=''
This got broken in commit 3f1788e11f2685299067ac0f8d3e4fd141a5b5cd which
added support for -Dmksymlink.
That commit basically assumed that the stating point was always '.' and
that the './.git' directory exist. Neither are true when the command is
run from inside a subdir.
The proper thing to do is to first find the `$root` directory and then
check if it's in -Dmksymlinks target dir. (Luckily all that code already
exists, we just need to move the -Dmksymlinks logic a bit down.)
With this change applied:
$ ../miniperl -I../lib ../make_patchnum.pl
Updating 'git_version.h' and 'lib/Config_git.pl'
$ cat lib/Config_git.pl
######################################################################
# WARNING: 'lib/Config_git.pl' is generated by make_patchnum.pl
# DO NOT EDIT DIRECTLY - edit make_patchnum.pl instead
######################################################################
$Config::Git_Data=<<'ENDOFGIT';
git_commit_id='c589bf60082d119a14e11ef05a77fed6d36aba4b'
git_describe='v5.37.2-170-gc589bf6'
git_branch='bram/fix-make_patchnum-in-subdir'
git_uncommitted_changes='0'
git_commit_id_title='Commit id:'
git_commit_date='2022-08-16 15:49:38 +0200'
ENDOFGIT
Note:
- to build on Windows one must do a `cd win32` before building. This is how
I noticed the file was incorrect.
- I've tested running make_patchnum from:
* the root
* a subdir
* a '-Dmksymlinks' target dir
* a subdir inside a '-Dmksymlinks' target
(PS: I also fixed the indentation from tabs to 4 spaces)
|