Re: versioning

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

 




On 05/20/2017 03:34 PM, Karel Zak wrote:
> On Fri, May 19, 2017 at 03:00:14PM -0400, J William Piggott wrote:
>> git-pull(1): By default, tags that point at objects that are downloaded
>> from the remote repository are fetched and stored locally.
>>
>> If a tag is created from the master branch, then (with the default
>> configuration) pulling the master branch will pull the tag as well.
>>
>> I think perhaps Karel changed his bugfix release workflow and started
>> creating them from a working branch. 
> 
> I always use master branch.
> 
> $ git branch --contains  v2.30-rc1
> * master
>

So, I muddied the waters by talking about two different topics.
What I really want to discuss are bugfix releases: v2.xx.x.

The following comment should have been a separate topic. I mentioned it
only because the odd behavior that I experienced with the recent rc
release sparked the thought that the bugfix releases are being created
in a working branch and that could explain why 'git pull' is not
fetching their tags.

>> I say that because the
>> v2.30-ReleaseNotes file never hit my local repo, the master branch,
>> until May 16th. That is why I submitted my patch for it as a simple diff
>> instead of a git format-patch.
> 
> https://github.com/karelzak/util-linux/blob/master/Documentation/releases/v2.30-ReleaseNotes
>                                             ^^^^^^
> 
> as well as on kernel.org:
> 
> https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/tag/?h=v2.30-rc1

I wasn't trying to say that this file isn't in 'master', nor that the
stable releases cannot be reached from 'master'; they certainly can be
as they are in the 'master' commit log.

What I was saying is that the release was on May 12. The commit the tag
references hit my repo on May 14, but the v2.30-ReleaseNotes file did
not pull until May 16; May 15 had nothing:

$ find -newermt "-12 day" -printf "%TD %p\n" | sort

 8< ...

05/14/17 ./AUTHORS
05/14/17 ./NEWS
05/14/17 ./aclocal.m4
05/14/17 ./config.h.in
05/14/17 ./configure.ac
05/14/17 ./po/ca.po

 8< ...

05/16/17 ./Documentation/TODO
05/16/17 ./Documentation/releases/v2.30-ReleaseNotes

This seems odd to me, but has all worked out now. The v2.30-rc1 tag
contains the unpatched v2.30-ReleaseNotes without the security warnings,
but I guess that is what v2.30-rc2 is for ;)

Enough of that, the real topic is below.

> 
>> It seems to me that the working branch should be merged into master
>> first, and then create the tag, tarball, etc. from master.  That way
>> pulling master will fetch the release tags. That should be expected
>> behavior.
>>
>> IMO, creating releases from an ephemeral branch, or anything other than
>> master, is asking for headaches.
> 
> Maybe you need 'git clean -xdf' before 'git pull' or so.
>

The bugfix tags 2.xx.x are from another branch and not reachable from
'master', it's not because my local repo is dirty. Here is an example
with a fresh repo:

S git clone https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git
 8< ...
$ cd util-linux
$ git branch --contains v2.29.1  
$ git branch --contains v2.29.2
$ git branch --contains v2.28.1
$ git branch --contains v2.27.1
$ git branch --contains v2.26.1
$ git branch --contains v2.25.1
$ git branch --contains v2.24.1
$ git branch --contains v2.23.1
$ git branch --contains v2.22.1
$ git branch --contains v2.21.1
$ git branch --contains v2.20.1
$ git branch --contains v2.19.1
$ git branch --contains v2.17.1
$ git branch --contains v2.16.1
$ git branch --contains v2.15.1
$ git branch --contains v2.14.1
$ git branch --contains v2.13.1

For example this tag was created from a working branch:

$ git show v2.29.1

 8< ...

commit 9ebc8a7a882ddfd93bc3262514791a0dcaadba09
Author: Karel Zak <kzak@xxxxxxxxxx>
Date:   Fri Jan 20 14:13:08 2017 +0100

    build-sys: release++ (v2.29.1)
    
    Signed-off-by: Karel Zak <kzak@xxxxxxxxxx>

 8< ...
 ____________________________________________________

The commit, and therefore the tag, is not in 'master' and is not
reachable from master.

Some issues with this model:

* 'git pull upstream master', etcetera, will not fetch the bugfix
     release tags because they are not reachable from 'master'.
     This could be unexpected behavior for someone new to the project.

* A checked-out bugfix release tag has all of the releases in the NEWS
     file. Whereas, 'master' omits the bugfix releases.

* A checked-out bugfix release tag has all of the v*-ReleaseNotes.
     Whereas, 'master' omits all of the bugfix v2.xx.x-ReleaseNotes.

* The previous two make these orphaned tags more complete then 'master' is.

* I don't know this for a fact, but I suspect that due to the tags not
    being reachable from any branch that they might have to store the
    entire file tree? If yes, it means more bandwidth and storage use.

These aren't issues for me personally, I just thought it was something
the project should consider.

My thoughts are that bugfix releases should be committed to 'master' the
same as the stable/rc releases are. Then the tag created from that commit.


>>>> I push to the both repos in the same time
>>>> $ git push; git push github master; git push --tags; git push github --tags
>>
>> I think it would be better to:
>>
>> git push --follow-tags; git push --follow-tags github master
> 
> $ git push --follow-tags; git push --follow-tags github master
> Everything up-to-date
> Everything up-to-date
>

Well, 'git push --tags' already uploaded all of the tags, so at the moment
using --follow-tags isn't very meaningful. It could be in the future
though. Of course, if the bugfix tags continue to be unreachable from
master, then you will have to go back to using 'git push --tags'.


>> This would be a good crosscheck to know that the release tags were
>> created against master and not some other branch.
>>
>> Also, one day you may want to have some private tags and --tags will
>> push everything.  Whereas, --follow-tags will only push tags associated
>> with what is being pushed, that is, the master branch.
> 
> OK.
> 
>     Karel
> 
--
To unsubscribe from this list: send the line "unsubscribe util-linux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux