Re: How to find out which files were changed in -CURRENT and -STABLE between two releases?

2017-08-10 Thread Juan Francisco Cantero Hurtado
On Thu, Aug 10, 2017 at 06:57:40PM -, pipfsta...@openmailbox.org wrote:
> Hello,
> 
> CVS is delivering me my daily dose of PITA (and I'm delivering a daily
> dose of whining to the list). I feel like I'm trying to use a wooden bicycle
> driven by jolts from the ground to make a tour from Washington, DC to
> Sacramento, California.
> 
> I've found cvs2cl.pl that turns pretty useless output of `cvs log` into
> something meaningful.
> But I didn't made my way through branches and tags.
> I know that when release is done, sources are tagged with a
> 'OPENBSD_x_y_BASE' tag. But cvs doesn't provide a way (well, at least
> I didn't find it) to find a commit id when a certain tag was created.
> Well, I tried to grep (1) the raw output of cvs log to see how tags
> refer to files in per-file basis. But some files don't have any symbolic
> names at all!
> E.g.:
> 
> "RCS file: /cvs/src/sys/arch/armv7/sunxi/Attic/sximmc.c,v
> Working file: sys/arch/armv7/sunxi/sximmc.c
> head: 1.12
> branch:
> locks: strict
> access list:
> symbolic names:
> keyword substitution: kv
> total revisions: 12;
> selected revisions: 12"
> 
> And it is not a new file, first revision is dated 2016/08/15. It might
> be some development branch, but then how do I differ which commits are
> made into a release, and which are not?
> 
> Is there any way to make cvs show a bunch of changes that are made
> between two releases in the -CURRENT and -STABLE branches?

If you know when the cvs tag was created, then you can use git to show
the changes since that date until HEAD. Unfortunately, we don't have a
git repo with the tags.


-- 
Juan Francisco Cantero Hurtado http://juanfra.info



Re: How to find out which files were changed in -CURRENT and -STABLE between two releases?

2017-08-10 Thread Stuart Henderson
On 2017-08-10, pipfsta...@openmailbox.org  wrote:
> Hello,
>
> CVS is delivering me my daily dose of PITA (and I'm delivering a daily
> dose of whining to the list). I feel like I'm trying to use a wooden bicycle
> driven by jolts from the ground to make a tour from Washington, DC to
> Sacramento, California.
>
> I've found cvs2cl.pl that turns pretty useless output of `cvs log` into
> something meaningful.
> But I didn't made my way through branches and tags.

The output from cvsps might be better for this. It's not perfect and can
get confused in some cases (the fact that the rcs files in repo aren't
squeaky clean plays some part in this). It generally works better when
done in smaller parts of the tree.

> I know that when release is done, sources are tagged with a
> 'OPENBSD_x_y_BASE' tag. But cvs doesn't provide a way (well, at least
> I didn't find it) to find a commit id when a certain tag was created.

Commit ids were hacked into CVS fairly late in its history and there's
not much tooling for them. For the main part you'll just need to look at
per-file revisions. A CVS tree is just a collection of separate RCS files.

> And it is not a new file, first revision is dated 2016/08/15. It might
> be some development branch, but then how do I differ which commits are
> made into a release, and which are not?

If there's no release tag in "cvs log", that file didn't make it into a
release. For your example file it was renamed/moved and the moved version
did make it to a release (but cvs doesn't track moves).

> Is there any way to make cvs show a bunch of changes that are made
> between two releases in the -CURRENT and -STABLE branches?

You can do a diff or log between revision markers, but again as it's per
file it's not going to be directly very useful.

The other thing you could do is look at the git conversion. You'll need
to figure out the *dates* the tree was tagged (sys/conf/newvers.sh is
a good way to get close to these) because none of the conversion tools
that we've tried are able to successfully convert branch information
from the OpenBSD repo.




Re: How to find out which files were changed in -CURRENT and -STABLE between two releases?

2017-08-10 Thread Ingo Schwarze
Hi,

pipfsta...@openmailbox.org wrote on Thu, Aug 10, 2017 at 08:07:44PM -:

> I want to fill https://openbsd.org/plus61.html

Wow, that would be useful, but it's a lot of work.  Multiple days
of full-time work, probably.

In the past, people who did that have usually started from a mailing
list archive like http://marc.info/?l=openbsd-cvs, and then looked at
CVS as required.

Starting from cvs2cl would be fine, too, and mostly equivalent.
Maybe even a bit easier because you see the revision numbers
right away.

You only need to look at changes involving two-component revision
numbers (x.y), those are on the MAIN branch, where all of -current
and all releases happen.  Four-component revision number (x.y.z.t)
are on branches, hence irrelevant.

To see whether an individual revision of a file was before or after
release, just look at the log for that file, and where the tag is.

Note that in rare cases, a release version of one file can be
*newer* than a post-release version of another file - but at
most by a few days, and only in those cases where Theo manually
retagged a file to put a last-minute bugfix into the release.

In extremely rare cases, one person may have changed several
files with one "cvs commit" command (and hence all with the
same date and commit message), and some of the resulting file
revisions may be part of the release, while others may not.

To get a rough first impression about the time range in which the
cutoff happened, look at:
https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/conf/newvers.sh

Stuff *newer* than the "unlock" change is *usually* post-release
(except when Theo retagged something), stuff *older* than the
"unlock" change is *usually* in the release - but a few changes
may have gone in before the unlock change.  So be careful with
changes in the timerange of about two days before to about seven
days after.  Some of them may be in the release, some post-release,
independent of their chronological ordering, even though they are
all on the same branch!

> Thus I need to obtain all commit messages for commits done between
> 6.0 release and 6.1 release. 
> But cvs2cl just spits out all commits done in every branch without
> marking them with tags they are assigned to. 

Again, ignore everthing with four-component numbers, use all the rest.

> So I can't see if a commit was done before or after 6.0 release,

Not from cvs2cl, no.  That is a limitation of that particular
(quick and dirty) script, not a limitation of CVS itself.

> or if it is a part of the -STABLE branch for the 6.0 release, 

You *can* see that from cvs2cl output.
Those would have four-component revision numbers.

> or whatever else there is going on in the source tree. 

Nothing else is going on in the tree.  In OpenBSD, side branches
for development are strongly frowned upon and are used extremely
rarely, and none have been active for some years now as far as i
remember.

> Even just getting info on the points (commit IDs) where the code
> was frozen for the release would be very useful.  But I failed 
> to find it in mail archives. 

Your biggest problem is that you are trying to figure out how a
tiger looks like by asking specific questions about its roots,
its stem, and its leaves.

In git, everything revolves around commits and files are of
very little importance.

In CVS, the basic concept is completely different.  Everything
revolves around files and their revisions.  The revisions of one
file are independent of the revisions of any other file, and the
notion of a "commit" is practically meaningless.  Most definitely,
commits do not have parents and children, ordering them chronologically
is completely useless, and in particular tells you nothing about
which revisions of which files are or are not part of a release.

Yours,
  Ingo



Re: How to find out which files were changed in -CURRENT and -STABLE between two releases?

2017-08-10 Thread pipfstarrd
> it's not clear what you're really trying to do. if you want the files for a
> release, cvs co -r that release.
I want to fill https://openbsd.org/plus61.html
Thus I need to obtain all commit messages for commits done between 6.0 release 
and 6.1 release. 
But cvs2cl just spits out all commits done in every branch without marking them 
with tags they are assigned to. 
So I can't see if a commit was done before or after 6.0 release, or if it is a 
part of the -STABLE branch for the 6.0 release, 
or whatever else there is going on in the source tree. 

Even just getting info on the points (commit IDs) where the code was frozen for 
the release would be very useful. But I failed 
to find it in mail archives. 

Re: How to find out which files were changed in -CURRENT and -STABLE between two releases?

2017-08-10 Thread Ted Unangst
pipfsta...@openmailbox.org wrote:
> Hello,
> 
> CVS is delivering me my daily dose of PITA (and I'm delivering a daily
> dose of whining to the list). I feel like I'm trying to use a wooden bicycle
> driven by jolts from the ground to make a tour from Washington, DC to
> Sacramento, California.
> 
> I've found cvs2cl.pl that turns pretty useless output of `cvs log` into
> something meaningful.
> But I didn't made my way through branches and tags.
> I know that when release is done, sources are tagged with a
> 'OPENBSD_x_y_BASE' tag. But cvs doesn't provide a way (well, at least
> I didn't find it) to find a commit id when a certain tag was created.
> Well, I tried to grep (1) the raw output of cvs log to see how tags
> refer to files in per-file basis. But some files don't have any symbolic
> names at all!
> E.g.:
> 
> "RCS file: /cvs/src/sys/arch/armv7/sunxi/Attic/sximmc.c,v
> Working file: sys/arch/armv7/sunxi/sximmc.c
> head: 1.12
> branch:
> locks: strict
> access list:
> symbolic names:
> keyword substitution: kv
> total revisions: 12;
> selected revisions: 12"
> 
> And it is not a new file, first revision is dated 2016/08/15. It might
> be some development branch, but then how do I differ which commits are
> made into a release, and which are not?

well, you're looking at a file that was deleted before it made it into any
releases. it's not going to have tags.

> Is there any way to make cvs show a bunch of changes that are made
> between two releases in the -CURRENT and -STABLE branches?

cvs diff -rOPENBSD_6_1 -rHEAD ?

it's not clear what you're really trying to do. if you want the files for a
release, cvs co -r that release.