mbox series

[0/4] git-p4: fix RCS keyword processing encoding errors

Message ID 20211213225441.1865782-1-jholdsworth@nvidia.com (mailing list archive)
Headers show
Series git-p4: fix RCS keyword processing encoding errors | expand

Message

Joel Holdsworth Dec. 13, 2021, 10:54 p.m. UTC
This patch-set fixes a family of issues with git-p4's handling of
incoming text data that contains RCS keywords, when those files contain
bytes which are invalid UTF-8 codes.

Among the patches is a fix for the issue, as well as some peripheral
tidy-ups and improvements to the existing code.

This patch-set is compatible and has been tested with both Python 2 and
3, and includes a test.

Joel Holdsworth (4):
  git-p4: use with statements to close files after use in
    patchRCSKeywords
  git-p4: pre-compile RCS keyword regexes
  git-p4: add raw option to read_pipelines
  git-p4: resolve RCS keywords in binary

 git-p4.py             | 66 ++++++++++++++++++-------------------------
 t/t9810-git-p4-rcs.sh | 15 ++++++++++
 2 files changed, 42 insertions(+), 39 deletions(-)

Comments

Andrew Oakley Dec. 14, 2021, 10:36 p.m. UTC | #1
On Mon, 13 Dec 2021 22:54:37 +0000
Joel Holdsworth <jholdsworth@nvidia.com> wrote:

> This patch-set fixes a family of issues with git-p4's handling of
> incoming text data that contains RCS keywords, when those files
> contain bytes which are invalid UTF-8 codes.
> 
> Among the patches is a fix for the issue, as well as some peripheral
> tidy-ups and improvements to the existing code.

FWIW, these patches look good to me.

I spent a while trying to understand exactly how perforce handles the
keyword expansion stuff a few years ago.  Other quirks which I can
remember are:
- Files with a filetype of "utf16" files get expanded before we see
  them.  If we want to support that in git-p4 then I think some special
  handling will be required.
- Lines longer than lbr.rcs.maxlen at time of commit are not considered
  to be keyword expansions.  I don't think there is any way to handle
  this, but hopefully it won't ever occur in practice.

I'm not suggesting that these issues need to be solved as part of this
set of patches, just thought that you might want to be aware that there
are some more unsolved issues here.

Thanks