git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: remaining git-cvsimport problems: robustness when cvsps feeds strange history

From
Yann Dirson <ydirson@altern.org>
Date
Jun 1, 2006, 21:28 UTC
Message-ID
<20060601212825.GO6535@nowhere.earth>
In-Reply-To
<20060527163555.GM1164@nowhere.earth>
On Sat, May 27, 2006 at 06:35:55PM +0200, Yann Dirson wrote:
Show 10 quoted lines
> > OTOH, the cvsps output you are showing us seems to be in the right
> > order...  patchset 20 should go on top of patchset 3... is cvsimport
> > truly mishandling this?
> 
> That's the problem.  I had just copypasted the logs for handling at
> home, and then I discovered in the cvsps log that the timestamp for
> patchset 2 is the same as the one for patchset 1, which is obviously
> wrong.  I'll look at the cvs repo next week to understand whether that
> comes from the RCS file, or whether it is cvsps misunderstanding
> something.

The problem indeed stems from the RCS files themselves. It thus comes from a bug-or-feature of cvs 1.12.12. This week I have found a number of files with such an history in various repos in use at work.

I finally realize I was trying to reproduce the problem at home using 1.12.9, where the issue does not appear to exist. The following script does show the problem with 1.12.13.

As you see, a phantom commit is added prior to the resurecting commit on the branch, and it has the same timestamp as the its dead base revision on the trunk.

In the logs I had from real repositories with 1.12.12, the "lines" attribute for the phantom revision was a mirror of the revision following it, reflecting no reality at all (would have been "+0 -1" here). There is no mention of such a bugfix in the cvs NEWS file, but who knows.

I found no mention of such a feature in the 1.12.9-13 entries in the CVS NEWS file, so I doubt that is an intended behaviour - I'll report a bug on cvs.

However, cvsps should surely be made aware of this behaviour, even if it is a bug, since being there for at least 2 cvs releases is enough to have infected many repositories...

==== script #!/bin/sh set -e

# setup repo and working area cvs -d $PWD/root init mkdir root/test cvs -d $PWD/root co test cd test

# trunk touch file1 file2 cvs add file1 file2 cvs ci -m "add files" sleep 2

rm file1 cvs rm file1 cvs ci -m "rm file1" sleep 2

cvs tag A

# branch based on trunk cvs tag -b A_HEAD cvs up -r A_HEAD -P echo "stuff and more stuff" >file1 cvs add file1 cvs ci -m "work" sleep 2

cvsps --norc -x -A ==== cvs log file1 ---------------------------- revision 1.2 date: 2006-06-01 23:12:21 +0200; author: dwitch; state: dead; lines: +0 -0; commitid: GyCIctKzKqKVwlzr; branches: 1.2.2; rm file1 ---------------------------- revision 1.1 date: 2006-06-01 23:12:17 +0200; author: dwitch; state: Exp; commitid: j1zLyPu2Bw6Uwlzr; add files ---------------------------- revision 1.2.2.2 date: 2006-06-01 23:12:23 +0200; author: dwitch; state: Exp; lines: +1 -0; commitid: D3Fd6f9Wz8cWwlzr; work ---------------------------- revision 1.2.2.1 date: 2006-06-01 23:12:21 +0200; author: dwitch; state: dead; lines: +0 -0; commitid: D3Fd6f9Wz8cWwlzr; file file1 was added on branch A_HEAD on 2006-06-01 21:12:23 +0000 ====

-- 
Yann Dirson    <ydirson@altern.org> |
Debian-related: <dirson@debian.org> |   Support Debian GNU/Linux:
                                    |  Freedom, Power, Stability, Gratis
     http://ydirson.free.fr/        | Check <http://www.debian.org/>
Previous: Yann Dirson
Message 4 of 4 in “remaining git-cvsimport problems: robustness when cvsps feeds strange history”
  1. Yann DirsonMay 27, 2006
  2. Martin LanghoffMay 27, 2006
  3. Yann DirsonMay 27, 2006
  4. Yann DirsonJun 1, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.