From Fedora Project Wiki
 
(17 intermediate revisions by 5 users not shown)
Line 4: Line 4:
== Summary ==
== Summary ==


This Change will move Fedora git repositories to use "main" as the default git branch instead of "master". Specific repositories will be manually moved and default git branch for new projects will be set to use "main".
This Change will move Fedora git repositories to use "main" as the default git branch instead of "master". Specific repositories will be manually moved and default git branch for new projects will be set to use "main". src.fedoraproject.org/rpms (packages) will have a "rawhide" branch for rawhide with a symref (link) of "main".


The Fedora Community strives to be open and welcoming. Some language around our git repositories is dated and could be more inclusive. Many git repositories currently use "master" as the default branch. This Change will move many repositories (see below) to use a "main" branch as default. This small bit of naming adjustment is in-line with Fedora's vision for free and open source software built by inclusive, welcoming, and open-minded communities.
The Fedora Community strives to be open and welcoming. Some language around our git repositories is dated and could be more inclusive. Many git repositories currently use "master" as the default branch. This Change will move many repositories (see below) to use a "main" branch as default. This small bit of naming adjustment is in-line with Fedora's vision for free and open source software built by inclusive, welcoming, and open-minded communities.
Line 11: Line 11:
== Owner ==
== Owner ==


* Name: [[User:Kevin| Kevin Fenzi]], [[User:bcotton| Ben Cotton]], [[User:pingou| pingou]], [[User:mohanboddu| Mohan Boddu]]
* Name: [[User:Kevin| Kevin Fenzi]], [[User:bcotton| Ben Cotton]], [[User:pingou| pingou]], [[User:mohanboddu| Mohan Boddu]], [[User:till| Till Maas]]
* Email: kevin@scrye.com, bcotton@redhat.com, pingou@pingoured.fr, mboddu@bhujji.com
* Email: kevin@scrye.com, bcotton@redhat.com, pingou@pingoured.fr, mboddu@bhujji.com, opensource@till.name
 


== Current status ==
== Current status ==
[[Category:ChangePageIncomplete]]
[[Category:ChangeAcceptedF34]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- The Wrangler announces the Change to the devel-announce list and changes the category to Category:ChangeAnnounced (no action required) -->
<!-- After review, the Wrangler will move your page to Category:ChangeReadyForFesco... if it still needs more work it will move back to Category:ChangePageIncomplete-->


<!-- Select proper category, default is Self Contained Change -->
[[Category:SelfContainedChange]]
[[Category:SelfContainedChange]]
<!-- [[Category:SystemWideChange]] -->


* Targeted release: [[Releases/34 | Fedora 34 ]]  
* Targeted release: [[Releases/34 | Fedora 34 ]]  
* Last updated: <!-- this is an automatic macro — you don't need to change this line -->  {{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}}  
* Last updated: <!-- this is an automatic macro — you don't need to change this line -->  {{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}}  
* FESCo issue: <will be assigned by the Wrangler>
* FESCo issue: [https://pagure.io/fesco/issue/2519 #2519]
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1908890 #1908890]
* Release notes tracker: <will be assigned by the Wrangler>
* Release notes tracker: [https://pagure.io/fedora-docs/release-notes/issue/618 #618]
 


== Detailed Description ==
== Detailed Description ==
Line 40: Line 32:
== Feedback ==
== Feedback ==


 
* Why not use "rawhide" for dist-git?
** Not every namespace on dist-git has a rawhide version. For example: containers do not have/use rawhide. And having different default branches on different namespaces is not very appealing.


== Benefit to Fedora ==
== Benefit to Fedora ==
Line 51: Line 44:
This change will take place in a number of phases:
This change will take place in a number of phases:


=== Phase0 - 2020-12-14 ===
=== Phase0 - 2021-01-05 - COMPLETE ===


   A guide will be published to explain how maintainers/project managers can change the default
   A guide will be published to explain how maintainers/project managers can change the default
   branch on pagure.io, which they can then do based in their projects desires.
   branch on pagure.io, which they can then do based in their projects desires.


=== Phase1 - 2020-12-15 ===
=== Phase1 - 2021-01-06 COMPLETE ===


The following repos will be switched:
The following repos will be switched:


  src.fedoraproject.org/flatpacks/*
   pagure.io:
   pagure.io:
     releng
     releng
Line 75: Line 67:
     workstation-ostree-config
     workstation-ostree-config
     pungi-fedora
     pungi-fedora
  github.com
    <span style="color: red; text-decoration: line-through;">fedora-docs/*</span>
    <span style="color: red; text-decoration: line-through;">fedora-docs-i18n/*</span>
 
=== Phase2 - <span style="color; red; text-decoration: line-through;">2021-01-13</span> 2021-01-27 ===
 
  github.com
     fedora-infra/*
     fedora-infra/*


=== Phase2 - 2021-01-13 ===
  src.fedoraproject.org/*
 
  fedora-docs/*
  fedora-docs-i18n/*
 
  Along with the src.fedoraproject.org changes, we will update the branch filter list and forbid 'master' from being pushed at all. Additionally, we will establish a sym-ref between 'rawhide' and 'main' as a convenience for people who prefer to use 'main' branch for rawhide.


  src.fedoraproject.org/*
   pagure.io default for new projects will be changed to 'main'
   pagure.io default for new projects will be changed to 'main'


* Proposal owners:
* Proposal owners:


  Documentation on how other projects can change these things if they wish
   Switching all above listed projects git repos to use 'main'
   Switching all above listed projects git repos to use 'main'
   Deleting the 'master' branch
   Deleting the 'master' branch
Line 96: Line 98:


   Releng will adjust any scripts that assume 'master' branch to use 'main' instead. The list includes and maybe few more
   Releng will adjust any scripts that assume 'master' branch to use 'main' instead. The list includes and maybe few more
   [https://pagure.io/releng/blob/master/f/scripts/update-critpath.py update-critpath.py]
   [https://pagure.io/releng/blob/main/f/scripts/update-critpath.py update-critpath.py]
   [https://pagure.io/releng/blob/master/f/scripts/block_retired.py block_retired.py]
   [https://pagure.io/releng/blob/main/f/scripts/block_retired.py block_retired.py]
   [https://pagure.io/releng/blob/master/f/scripts/update-docs.sh update-docs.sh]
   [https://pagure.io/releng/blob/main/f/scripts/update-docs.sh update-docs.sh]
   [https://pagure.io/releng/blob/master/f/scripts/find_unblocked_orphans.py find_unblocked_orphans.py]
   [https://pagure.io/releng/blob/main/f/scripts/find_unblocked_orphans.py find_unblocked_orphans.py]
   [https://pagure.io/releng/blob/master/f/scripts/mass-rebuild-second-run.py mass-rebuild-second-run.py]
   [https://pagure.io/releng/blob/main/f/scripts/mass-rebuild-second-run.py mass-rebuild-second-run.py]
   [https://pagure.io/releng/blob/master/f/scripts/adjust-eol-modules.py adjust-eol-modules.py]
   [https://pagure.io/releng/blob/main/f/scripts/adjust-eol-modules.py adjust-eol-modules.py]
   [https://pagure.io/releng/blob/master/f/scripts/pdc/adjust-eol-modules.py adjust-eol-modules.py]
   [https://pagure.io/releng/blob/main/f/scripts/pdc/adjust-eol-modules.py adjust-eol-modules.py]
   [https://pagure.io/releng/blob/master/f/scripts/pdc/adjust-eol-modules.py adjust-eol-modules.py]
   [https://pagure.io/releng/blob/main/f/scripts/pdc/adjust-eol-modules.py adjust-eol-modules.py]
   [https://pagure.io/releng/blob/master/f/scripts/pdc/adjust-eol.py adjust-eol.py]
   [https://pagure.io/releng/blob/main/f/scripts/pdc/adjust-eol.py adjust-eol.py]
   [https://pagure.io/releng/blob/master/f/scripts/pdc/create-new-release-branches.py create-new-release-branches.py]
   [https://pagure.io/releng/blob/main/f/scripts/pdc/create-new-release-branches.py create-new-release-branches.py]
   [https://pagure.io/releng/blob/master/f/scripts/pdc/create-branch.py create-branch.py]
   [https://pagure.io/releng/blob/main/f/scripts/pdc/create-branch.py create-branch.py]
   [https://pagure.io/releng/blob/master/f/scripts/pdc/adjust-eol-all.py adjust-eol-all.py]
   [https://pagure.io/releng/blob/main/f/scripts/pdc/adjust-eol-all.py adjust-eol-all.py]
   [https://pagure.io/releng/blob/master/f/scripts/check-unretirement.py check-unretirement.py]
   [https://pagure.io/releng/blob/main/f/scripts/check-unretirement.py check-unretirement.py]
   [https://pagure.io/releng/blob/master/f/scripts/mass-rebuild-special.py mass-rebuild-special.py]
   [https://pagure.io/releng/blob/main/f/scripts/mass-rebuild-special.py mass-rebuild-special.py]
   [https://pagure.io/releng/blob/master/f/scripts/need-rebuild.py need-rebuild.py]
   [https://pagure.io/releng/blob/main/f/scripts/need-rebuild.py need-rebuild.py]
   [https://pagure.io/releng/blob/master/f/scripts/distgit-branch-unused.py distgit-branch-unused.py]
   [https://pagure.io/releng/blob/main/f/scripts/distgit-branch-unused.py distgit-branch-unused.py]
   [https://pagure.io/releng/blob/master/f/scripts/create-new-release-branches.py create-new-release-branches.py]
   [https://pagure.io/releng/blob/main/f/scripts/create-new-release-branches.py create-new-release-branches.py]


* Policies and guidelines: N/A  
* Policies and guidelines: N/A  
Line 119: Line 121:


* Alignment with Objectives:
* Alignment with Objectives:


== Upgrade/compatibility impact ==
== Upgrade/compatibility impact ==
Line 157: Line 158:
A short guide on how to change this for pagure.io will be produced.
A short guide on how to change this for pagure.io will be produced.


Once the migration is over, packagers can run the following command to migrate their local clones to the new structure:
    git fetch # optionally with -p / --prune
    git branch -m master rawhide
    git branch -u origin/rawhide rawhide
If you have multiple git repos, you can apply the following script:
    for i in /path/to/dist/fedora/*/; do
        (
          pushd $i && git fetch -p &&
            git branch -m master rawhide &&
            git branch -u origin/rawhide rawhide
        )
    done |& tee /path/to/output
If you have used a different remote name than 'origin', you will need to adjust these commands accordingly
(Credit: Todd Zullinger)


== Release Notes ==
== Release Notes ==


Many git repositories used to create Fedora releases were moved to use a 'main' branch instead of a 'master' branch. The Fedora Project envisions a world where everyone benefits from free and open source software built by inclusive, welcoming, and open-minded communities.
Many git repositories used to create Fedora releases were moved to use a 'main' branch instead of a 'master' branch. The Fedora Project envisions a world where everyone benefits from free and open source software built by inclusive, welcoming, and open-minded communities.

Latest revision as of 08:40, 8 February 2021

GitRepos-master-to-main

Summary

This Change will move Fedora git repositories to use "main" as the default git branch instead of "master". Specific repositories will be manually moved and default git branch for new projects will be set to use "main". src.fedoraproject.org/rpms (packages) will have a "rawhide" branch for rawhide with a symref (link) of "main".

The Fedora Community strives to be open and welcoming. Some language around our git repositories is dated and could be more inclusive. Many git repositories currently use "master" as the default branch. This Change will move many repositories (see below) to use a "main" branch as default. This small bit of naming adjustment is in-line with Fedora's vision for free and open source software built by inclusive, welcoming, and open-minded communities.


Owner

Current status

Detailed Description

The Fedora Project controls a number of git repositories. This change will move the default branch (that is, the git branch used when nothing is specified) from 'master' to 'main'. Existing git clones will need to pull to get the changed default branch. Existing Pull Requests against the 'master' branch will need to be rebased against the 'main' branch. Documentation will be updated.


Feedback

  • Why not use "rawhide" for dist-git?
    • Not every namespace on dist-git has a rawhide version. For example: containers do not have/use rawhide. And having different default branches on different namespaces is not very appealing.

Benefit to Fedora

The Fedora Project will be a more welcoming place for new contributors.


Scope

This change will take place in a number of phases:

Phase0 - 2021-01-05 - COMPLETE

  A guide will be published to explain how maintainers/project managers can change the default
  branch on pagure.io, which they can then do based in their projects desires.

Phase1 - 2021-01-06 COMPLETE

The following repos will be switched:

 pagure.io:
   releng
   releng/*
   fedora-comps
   fedora-kickstarts
   fedora-infrastructure
   fedora-lorax-templates
   fedora-mediawikitheme
   fedora-packager
   fedora-infra/*
   infra-docs
   koji-fedmsg-plugin
   workstation-ostree-config
   pungi-fedora
   fedora-docs/*
   fedora-docs-i18n/*

Phase2 - 2021-01-13 2021-01-27

  github.com
   fedora-infra/*
  src.fedoraproject.org/*
  fedora-docs/*
  fedora-docs-i18n/*
  Along with the src.fedoraproject.org changes, we will update the branch filter list and forbid 'master' from being pushed at all. Additionally, we will establish a sym-ref between 'rawhide' and 'main' as a convenience for people who prefer to use 'main' branch for rawhide. 
  pagure.io default for new projects will be changed to 'main'
  • Proposal owners:
  Documentation on how other projects can change these things if they wish
  Switching all above listed projects git repos to use 'main'
  Deleting the 'master' branch
  Announcing when changes have been made on devel-announce / other lists.
  • Other developers:
  Other developers are encouraged to change their upstream projects on pagure.io, github or gitlab.
  • Release engineering:
  Releng will adjust any scripts that assume 'master' branch to use 'main' instead. The list includes and maybe few more
  update-critpath.py
  block_retired.py
  update-docs.sh
  find_unblocked_orphans.py
  mass-rebuild-second-run.py
  adjust-eol-modules.py
  adjust-eol-modules.py
  adjust-eol-modules.py
  adjust-eol.py
  create-new-release-branches.py
  create-branch.py
  adjust-eol-all.py
  check-unretirement.py
  mass-rebuild-special.py
  need-rebuild.py
  distgit-branch-unused.py
  create-new-release-branches.py
  • Policies and guidelines: N/A
  • Trademark approval: N/A
  • Alignment with Objectives:

Upgrade/compatibility impact

Users with old checkouts will need to update their git configuration or re-clone repositories that have changed before they can see any new changes.

Repos used to build content for docs.fedoraproject.org can change the default git branch, but the Antora module version (in antora.yml) should remain master pending support for alternate "unversioned" versions upstream.


How To Test

  1. git clone <one of the listed repositories>
  2. cd <repositoryname>
  3. git branch

should return: * main


User Experience

Users and developers will see more welcoming language and that the fedora project expended effort to be more welcoming to them.


Dependencies

none


Contingency Plan

  • Contingency mechanism: Revert repositories, scripts, and docs back to the unwelcoming 'master'
  • Contingency date: 2020-01-13


Documentation

A short guide on how to change this for pagure.io will be produced.

Once the migration is over, packagers can run the following command to migrate their local clones to the new structure:

   git fetch # optionally with -p / --prune
   git branch -m master rawhide
   git branch -u origin/rawhide rawhide

If you have multiple git repos, you can apply the following script:

   for i in /path/to/dist/fedora/*/; do
       (
     	    pushd $i && git fetch -p &&
           git branch -m master rawhide &&
           git branch -u origin/rawhide rawhide
       )
   done |& tee /path/to/output

If you have used a different remote name than 'origin', you will need to adjust these commands accordingly

(Credit: Todd Zullinger)

Release Notes

Many git repositories used to create Fedora releases were moved to use a 'main' branch instead of a 'master' branch. The Fedora Project envisions a world where everyone benefits from free and open source software built by inclusive, welcoming, and open-minded communities.