I run a book digitizing project and pay people certain rate per 10K characters for the text files they upload to a git repo. Till now I was using following command to detect files authored by CertainEditor:
git log --use-mailmap --no-merges --author="CertainEditor" --name-only --pretty=format:""
Then I would pipe this output in wc -m
and get amount of characters authored by CertainEditor and pay him accordingly. Usually editors do not touch each other's files and everything worked well. However recently one editor spotted a typo in somebody else's file and corrected it. This behavior is actually good and I would like to encourage it. However, now the command above lists the corrected file also as his, and so he gets paid for all the characters in the file while he changed only one of them. This, obviously, is not good.
Do you have an idea how can I list all the files created (not authored / committed) by a user, so I can implement a fair characters counting?
Maybe some commit hooks can be used that will check whether the Author of a new commit is different from the previous one and if true - override it to the previous Author?
Those small changes by a non-creator may be left not paid for (as this action is not so intensive and may be reciprocal), but if you have a good idea how I can pay for the "diff" the non-creator provides - it would be nice!
CodePudding user response:
Overall not a nice approach as mentioned in the comments, still you can get an author of the file via git:
git log --diff-filter=A --pretty=format:"%an" <file>
So you can find all files created by the author and then filter out the rest. Or find an author for each file you selected with your command and then filter out.