Serious flaws in git cvsimport

2014-02-16 Thread Mojca Miklavec
Hello,

I really hate working with CVS, so I have set up a cronjob running
git cvsimport on regular basis to create a mirror of gnuplot
sources. I would use another tool, but until a few days ago I wasn't
aware of anything else that supported incremental updates, so that I
could run the conversion every few hours without the need to trash the
old conversions and make all my local/testing branches incompatible
with future development.

I had a lot of problems with the tool, but I was tolerating it (in the
spirit of numerous warnings that the tool isn't working properly):
- Files that have been deleted from CVS long ago don't get removed
from git (that's very very very annoying)
- I have numerous problems with file permissions (executable vs. non-executable)
- The first time when I do the import, all seems fine. But soon after
that I start getting numerous warnings during conversion in the spirit
of
revision 1.X of file Y is tagged but not present
But maybe that's a bug in CVS.

But recently I discovered that a commit in the main branch of CVS
(trunk/master/whatever-they-call-it-in-cvs) which was important to me
was simply ignored by git cvsimport. The commit modified three
files. Immediately after the commit, cvsimport claimed the repository
was already up-to-date. After other changes have been done in CVS,
bits and pieces from that important commit started appearing randomly,
together with other commits to CVS – for example when the same file
was modified in another commit, changes from that important commit
to the same file were included as well in that later commit (but they
didn't belong to each other).

My understanding was that warnings about bad behaviour of git
cvsimport were related mostly to inability to reproduce complicated
branching and merging with zillions of branches. That would be
acceptable to me because I wasn't interested in those zillions of
branches and tags anyway.

But it turned out that whatever is currently in the master branch of
the repository created by git cvsimport isn't even corresponding to
what's currently in CVS and some commits are simply missing from
history along with their commit messages. The git repository contains
too many files (those that have been deleted in CVS) and random other
differences in random files, so that I'm not even able to compile the
project any longer as a consequence.

I'm willing to provide the exact details about the failures, but from
what I understand the previous maintainer of the underlying tool
(cvsps) deprecated it due to too numerous problems and flawed design,
so I'm not sure if anyone would be willing to fix the bugs I'm running
into.

I'm currently testing cvs-fast-export of which I only heard a few days
ago in the desperate search for a replacement for git cvsimport.

It would be nice to see if manuals of cvsimport would at least mention
the existence of that tool in the same way as it mentions cvs2git (it
took me a while to learn about cvs-fast-export) or even better, to
consider it as an alternative for cvsps via a special argument to
cvsimport if that's possible.

Thank you very much,
Mojca

(Please CC me in replies.)
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


inconsistent logs when displayed on screen / piped to a file

2012-07-30 Thread Mojca Miklavec
Hello,

I'm trying to use git log to generate ChangeLog for a project
recently migrated from CVS.

The problem is that
git log --summary --stat --no-merges --date=short --decorate=short
behaves differently when the result is displayed on screen and when it
is piped to a file.

For example, running the commands:
a) git log --summary --stat --no-merges --date=short
--decorate=short e9f65aa976
b) git log --summary --stat --no-merges --date=short
--decorate=short e9f65aa976  /tmp/log.txt
would result in two different outputs:

a)

 aquaterm/Docs/gptProtocol.rtf |  316
++
 aquaterm/English.lproj/GPTInfoWindow.nib/classes.nib  |   12 +
 aquaterm/English.lproj/GPTInfoWindow.nib/info.nib |   12 +
 aquaterm/English.lproj/GPTInfoWindow.nib/objects.nib  |  Bin 0 - 1010 bytes
 aquaterm/English.lproj/GPTInfoWindow~.nib/classes.nib |4 +
 aquaterm/English.lproj/GPTInfoWindow~.nib/info.nib|   12 +
 aquaterm/English.lproj/GPTInfoWindow~.nib/objects.nib |  Bin 0 - 1232 bytes
 aquaterm/English.lproj/GPTWindow.nib/classes.nib  |   13 ++
 aquaterm/English.lproj/GPTWindow.nib/info.nib |   12 +

b)

 aquaterm/Docs/gptProtocol.rtf  |  316 ++
 .../English.lproj/GPTInfoWindow.nib/classes.nib|   12 +
 aquaterm/English.lproj/GPTInfoWindow.nib/info.nib  |   12 +
 .../English.lproj/GPTInfoWindow.nib/objects.nib|  Bin 0 - 1010 bytes
 .../English.lproj/GPTInfoWindow~.nib/classes.nib   |4 +
 aquaterm/English.lproj/GPTInfoWindow~.nib/info.nib |   12 +
 .../English.lproj/GPTInfoWindow~.nib/objects.nib   |  Bin 0 - 1232 bytes
 aquaterm/English.lproj/GPTWindow.nib/classes.nib   |   13 +
 aquaterm/English.lproj/GPTWindow.nib/info.nib  |   12 +


The project where the results could be easily reproduced is the following:
https://github.com/AquaTerm/AquaTerm
git://github.com/AquaTerm/AquaTerm.git

It is possible that I screwed up something when importing the project
from CVS. In that case I would be happy if someone could point me out
what exactly I did wrong, and I can still rewrite the history before
the first release of the project using git.

But in any case I find it weird that I get two different outputs.

I would be grateful for any clues or hints about what goes wrong.

Mojca
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: inconsistent logs when displayed on screen / piped to a file

2012-07-30 Thread Mojca Miklavec
On Mon, Jul 30, 2012 at 3:39 PM, Michael J Gruber wrote:
 Mojca Miklavec venit, vidit, dixit 30.07.2012 14:25:

 I'm trying to use git log to generate ChangeLog for a project
 recently migrated from CVS.

 The problem is that
 git log --summary --stat --no-merges --date=short --decorate=short
 behaves differently when the result is displayed on screen and when it
 is piped to a file.

 The only difference that I see is the formatting. (... is merely an
 abbreviation for a leading path.)

 a) probes your terminal for the number of columns and uses all available
 space.

 b) goes to a file and has no connected terminal, thus uses a default
 column number. You can change that number using

 COLUMNS=YourNumber git log YourArgs  YourFile

Wow, perfect, thank you very much. Setting COLUMNS=200 (the high
number just in case) solved the problem.

Mojca
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html