RFC: New Response type to aid rlog reponse parsing

patrick keshishian <[email protected]> Fri, 3 Nov 2017 22:48:01 -0700
Newsgroups gmane.comp.version-control.cvs.general
Message-ID <CAN0yQBrN+fRCbA0J+D+C5cXUEZ4csVgDw--s5MscmLWcrmYwdg@mail.gmail.com>
--001a114fd6dcb3775f055d21c31a
Content-Type: text/plain; charset="UTF-8"

Greetings,

I am hoping you would be open to adding a new (optional) response
type. Motivation behind this addition is to aid clients distinguish
the free-form log/commit messages in response to an rlog
query/request.

The new response type I am proposing is LOGM. A server recognizing it
in Valid-responses list, will prepend "LOGM " to each log/commit
message line (rather than "M ") while servicing rlog requests. Servers
not recognizing it will work as they do today.

With this change in effect, all guess-work over where a log/commit
message begins and ends is eliminated.


I ran into at least three different log/commit message forms which
confused CVSps and then in turn Git-cvsimport.

I have documented this [1] for interested parties. It is a rather
long-ish document. I have done my best to organize the information for
easy digestion and reference.


Attached is a patch implementing LOGM change against cvs-1.11.23
downloaded from your site (unfortunately I couldn't get sources
through anoncvs).

The changes are fairly simple, and the best I can tell, backward
compatible with unpatched components.

Given this, I hope you are open to accepting these changes.

Cheers,
--patrick

[1] http://sidster.com/code/cvs2git/

--001a114fd6dcb3775f055d21c31a
Content-Type: text/plain; charset="US-ASCII"; name="cvs-1.11.23.logm.patch.txt"
Content-Disposition: attachment; filename="cvs-1.11.23.logm.patch.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: file0

ZGlmZiAtcnVwIGN2cy0xLjExLjIzLm9yaWcvc3JjL2NsaWVudC5jIGN2cy0xLjExLjIzL3NyYy9j
bGllbnQuYwotLS0gY3ZzLTEuMTEuMjMub3JpZy9zcmMvY2xpZW50LmMJV2VkIE1heSAgNyAwODo1
NzozNCAyMDA4CisrKyBjdnMtMS4xMS4yMy9zcmMvY2xpZW50LmMJRnJpIE5vdiAgMyAxNjozNzoz
NCAyMDE3CkBAIC0zMzQyLDYgKzMzNDIsMTMgQEAgc3RydWN0IHJlc3BvbnNlIHJlc3BvbnNlc1td
ID0KICAgICBSU1BfTElORSgiRSIsIGhhbmRsZV9lLCByZXNwb25zZV90eXBlX25vcm1hbCwgcnNf
ZXNzZW50aWFsKSwKICAgICBSU1BfTElORSgiRiIsIGhhbmRsZV9mLCByZXNwb25zZV90eXBlX25v
cm1hbCwgcnNfb3B0aW9uYWwpLAogICAgIFJTUF9MSU5FKCJNVCIsIGhhbmRsZV9tdCwgcmVzcG9u
c2VfdHlwZV9ub3JtYWwsIHJzX29wdGlvbmFsKSwKKyAgICAvKgorICAgICAqIExvZyBtZXNzYWdl
IG1hcmtlci4KKyAgICAgKiBQcm9ncmFtcyB3aGljaCBwYXJzZSBybG9nIG91dHB1dCBuZWVkIHRo
aXMgZmVhdHVyZSBzbyB0byBjb3JyZWN0bHkKKyAgICAgKiBwYXJzZSB1c2VyLWVudGVyZWQsIGZy
ZWUtZm9ybSB0ZXh0IGluIHRoZSBjb21taXQgbWVzc2FnZXMuCisgICAgICogQ1ZTIGNsaWVudCBk
b2Vzbid0LCBzbyBmbGl0ZXIgaXQgdGhyb3VnaCBoYW5kbGVfbS4KKyAgICAgKi8KKyAgICBSU1Bf
TElORSgiTE9HTSIsIGhhbmRsZV9tLCByZXNwb25zZV90eXBlX25vcm1hbCwgcnNfb3B0aW9uYWwp
LAogICAgIC8qIFBvc3NpYmx5IHNob3VsZCBiZSByZXNwb25zZV90eXBlX2Vycm9yLiAgKi8KICAg
ICBSU1BfTElORShOVUxMLCBOVUxMLCByZXNwb25zZV90eXBlX25vcm1hbCwgcnNfZXNzZW50aWFs
KQogCmRpZmYgLXJ1cCBjdnMtMS4xMS4yMy5vcmlnL3NyYy9jdnMuaCBjdnMtMS4xMS4yMy9zcmMv
Y3ZzLmgKLS0tIGN2cy0xLjExLjIzLm9yaWcvc3JjL2N2cy5oCUZyaSBBdWcgMjUgMDg6NDg6NTUg
MjAwNgorKysgY3ZzLTEuMTEuMjMvc3JjL2N2cy5oCUZyaSBOb3YgIDMgMTY6Mzg6NDIgMjAxNwpA
QCAtOTM0LDMgKzkzNCw0IEBAIGV4dGVybiB2b2lkIGN2c19vdXRlcnIgUFJPVE8gKChjb25zdCBj
aGFyICosIHNpemVfdCkpOwogZXh0ZXJuIHZvaWQgY3ZzX2ZsdXNoZXJyIFBST1RPICgodm9pZCkp
OwogZXh0ZXJuIHZvaWQgY3ZzX2ZsdXNob3V0IFBST1RPICgodm9pZCkpOwogZXh0ZXJuIHZvaWQg
Y3ZzX291dHB1dF90YWdnZWQgUFJPVE8gKChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikpOwor
ZXh0ZXJuIHZvaWQgY3ZzX291dHB1dF9sb2dtIFBST1RPICgoY29uc3QgY2hhciAqLCBzaXplX3Qp
KTsKZGlmZiAtcnVwIGN2cy0xLjExLjIzLm9yaWcvc3JjL2xvZy5jIGN2cy0xLjExLjIzL3NyYy9s
b2cuYwotLS0gY3ZzLTEuMTEuMjMub3JpZy9zcmMvbG9nLmMJTW9uIEphbiAyOCAwNjo1NTo0NSAy
MDA4CisrKyBjdnMtMS4xMS4yMy9zcmMvbG9nLmMJRnJpIE5vdiAgMyAxNjozOTo0MSAyMDE3CkBA
IC0xNzE0LDkgKzE3MTQsNyBAQCBsb2dfdmVyc2lvbiAobG9nX2RhdGEsIHJldmxpc3QsIHJjcywg
dmVyLCB0cnVuaykKICAgICB7CiAJLyogRklYTUU6IFRlY2huaWNhbGx5LCB0aGUgbG9nIG1lc3Nh
Z2UgY291bGQgY29udGFpbiBhIG51bGwKICAgICAgICAgICAgYnl0ZS4gICovCi0JY3ZzX291dHB1
dCAocC0+ZGF0YSwgMCk7Ci0JaWYgKCgoY2hhciAqKXAtPmRhdGEpW3N0cmxlbiAocC0+ZGF0YSkg
LSAxXSAhPSAnXG4nKQotCSAgICBjdnNfb3V0cHV0ICgiXG4iLCAxKTsKKwljdnNfb3V0cHV0X2xv
Z20gKHAtPmRhdGEsIDApOwogICAgIH0KIH0KIApkaWZmIC1ydXAgY3ZzLTEuMTEuMjMub3JpZy9z
cmMvc2VydmVyLmMgY3ZzLTEuMTEuMjMvc3JjL3NlcnZlci5jCi0tLSBjdnMtMS4xMS4yMy5vcmln
L3NyYy9zZXJ2ZXIuYwlXZWQgTWF5ICA3IDA4OjU3OjM0IDIwMDgKKysrIGN2cy0xLjExLjIzL3Ny
Yy9zZXJ2ZXIuYwlGcmkgTm92ICAzIDE2OjQwOjQ3IDIwMTcKQEAgLTY3NjIsNCArNjc2Miw0NyBA
QCBjdnNfb3V0cHV0X3RhZ2dlZCAodGFnLCB0ZXh0KQogCWVsc2UgaWYgKHRleHQgIT0gTlVMTCkK
IAkgICAgY3ZzX291dHB1dCAodGV4dCwgMCk7CiAgICAgfQorfQorCit2b2lkCitjdnNfb3V0cHV0
X2xvZ20gKHN0ciwgbGVuKQorICAgIGNvbnN0IGNoYXIgKnN0cjsKKyAgICBzaXplX3QgbGVuOwor
eworI2lmZGVmIFNFUlZFUl9TVVBQT1JUCisgICAgY29uc3QgY2hhciAqcDsKKyAgICBzaXplX3Qg
bjsKKyAgICBzdHJ1Y3QgYnVmZmVyICpidWY7CisKKyAgICBpZiAoIXNlcnZlcl9hY3RpdmUgfHwg
IXN1cHBvcnRlZF9yZXNwb25zZSAoIkxPR00iKSkKKwlyZXR1cm4gY3ZzX291dHB1dCAoc3RyLCBs
ZW4pOworCisgICAgaWYgKGVycm9yX3VzZV9wcm90b2NvbCkKKwlidWYgPSBidWZfdG9fbmV0Owor
ICAgIGVsc2UKKwlidWYgPSBwcm90b2NvbDsKKworICAgIGlmIChsZW4gPT0gMCkKKwlsZW4gPSBz
dHJsZW4gKHN0cik7CisKKyAgICBmb3IgKDsgcCA9IHN0cmNocihzdHIsICdcbicpOyBzdHIgPSBw
ICsgMSkKKyAgICB7CisJbiA9IHAgLSBzdHIgKyAxOworCWJ1Zl9vdXRwdXQwIChidWYsICJMT0dN
ICIpOworCWJ1Zl9vdXRwdXQgKGJ1Ziwgc3RyLCBuKTsKKwlsZW4gLT0gbjsKKyAgICB9IAorICAg
IGlmIChsZW4gPiAwKQorICAgIHsKKwlidWZfb3V0cHV0MCAoYnVmLCAiTE9HTSAiKTsKKwlidWZf
b3V0cHV0IChidWYsIHN0ciwgbGVuKTsKKwlidWZfb3V0cHV0IChidWYsICJcbiIsIDEpOworICAg
IH0KKworICAgIGlmICghZXJyb3JfdXNlX3Byb3RvY29sKQorCWJ1Zl9zZW5kX2NvdW50ZWQgKHBy
b3RvY29sKTsKKworI2Vsc2UgLyogIVNFUlZFUl9TVVBQT1JUICovCisgICAgY3ZzX291dHB1dCAo
c3RyLCBsZW4pOworI2VuZGlmCiB9Cg==
--001a114fd6dcb3775f055d21c31a--