[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: lilypond-mode.el Changelog AUTHORS.texi

From: Juergen Reuter
Subject: Re: lilypond-mode.el Changelog AUTHORS.texi
Date: Fri, 22 Nov 2002 15:03:42 +0100 (CET)

On Fri, 22 Nov 2002, Heikki Johannes Junes wrote:

> > > $ cvs diff -uN file1 file2 file3 ... > yourpatch.diff
> compares agains latest version, always.

Not quite.  The cvs man page says:

"If you don't specify a particular  revision, your  files  are  compared
with the revisions they were based on."

My preferred way to make a patch (roughly, with modifications as needed)

1. Get the latest revision of each file.  For this purpose, check out the
   HEAD revision (if not already done) and run cvs update (i.e. retrieve
   the latest available revision).  Note that the set of the latest
   available revision of each file typically does not represent a release
   (such as 1.7.8), but mostly some kind of interim version.

2. (Re-)build lilypond.  If only a few things have changed since the last
   cvs update, "make all" may work; if in doubt, you should completely
   rebuild lilypond.  "make distclean" is a good way to enforce a
   complete rebuild, but it also removes some files such as the configure
   script, which you then also have to rebuild (i.e. by running
   autoconf/automake); alternatively, calling cvs update once again should
   retrieve the missing files.

3. Check if this interim version is basically working.  Interim versions
   are typically full of bugs, but you should check if it is in such a
   state that you can start working on it.  To check, you may e.g. try to
   compile some .ly files.  Actually, during build, some .ly files are
   already compiled.  So, if you can succcessfully build, that means that
   things basically should work.
   (In your particular case of working on the .el files, this check may
   be less important.)

4. Now it depends on what you are doing.  If you are not changing too
   many files, probably the best thing to do is to just ignore what's
   going on in the cvs repository; trying to keep always up with the
   newest versions while still working on your files is possibly a waste
   of time.  But this is my personal experience and may differ for other
   people or other circumstances (e.g. when touching many files).

5. Update to the latest revisions.  If your patch works, you should
   migrate to the latest revisions before posting it.  This is simply done
   by saying "cvs update".  But be careful: if someone else also worked on
   the same files, cvs will merge your modifications with those in the
   repository.  Often, such modifications occur at different places in
   the file such that they do not conflict.  However, if a conflict
   occurs, cvs will merge nevertheless, but will inform you about the
   conflict and mark the conflict in the merged file.  In the case of a
   conflict, you should go back to step 4 to solve the conflict.

6. Rebuild lilypond once again and check if your patch still works.  cvs
   detects conflicts on a syntactical basis, but it does not track
   semantic information such as change of variable names.  Hence, even if
   cvs does not report a merge conflict, a merged file still may not
   compile.  Therefore, rebuilding the whole thing and testing it is
   generally a good idea.  If it fails, go back to step 4.  (Once again,
   in your particular case of just changing .el files, this step may be

7. Submit a patch.  Just go into the top level directory of lilypond
   and say something like "cvs diff -u > mypatch.diff".  (You may want
   to check the contents if the generated file afterwards.)  If I recall
   correctly, Han-Wen once said that he prefers the ChangeLog entry to be
   posted separately.  I think this is because cvs typically will create
   merge conflicts on the ChangeLog file, such that it is much easier for
   Han-Wen to put it in separately rather than solving lots of cvs
   merge conflicts.

By the way, if you want to know which files are going to be merged
*before* you issue cvs update, just say "cvs status | grep Status".
(I am assuming here that during the short moment within the cvs status
and the cvs update command the repository does change.)  If you have very
complex changes that are going to be merged, then you may want to put a
copy of your file somewhere else before running cvs update.

Once again, this is my personally preferred way.  Other people may have
experienced cvs development differently.  Regarding the format of patches,
Han-Wen and Jan are the main developers and thus have the authority of
putting the "last word" upon this subject, since they have to integrate
all the patches into lilypond.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]