Changeset View
Standalone View
documentation/content/en/articles/committers-guide/_index.adoc
Show First 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | ||||||||||
|_SMTP Host_ | |_SMTP Host_ | |||||||||
|`smtp.FreeBSD.org:587` (see also <<smtp-setup>>). | |`smtp.FreeBSD.org:587` (see also <<smtp-setup>>). | |||||||||
|`_src/_` Git Repository | |`_src/_` Git Repository | |||||||||
|`ssh://git@gitrepo.FreeBSD.org/src.git` (see also <<git-getting-started-base-layout>>). | |`ssh://git@gitrepo.FreeBSD.org/src.git` (see also <<git-getting-started-base-layout>>). | |||||||||
|`_doc/_` Git Repository | |`_doc/_` Git Repository | |||||||||
|`ssh://git@gitrepo.FreeBSD.org/doc.git` (see also <<git-getting-started-doc-layout>>). | |`ssh://git@gitrepo.FreeBSD.org/doc.git` (see also <<git-getting-started-doc-layout>>). | |||||||||
|`_ports/_` Subversion Root | |`_ports/_` Git Repository | |||||||||
crees: Git repository | ||||||||||
|`svn+ssh://repo.FreeBSD.org/ports` (see also <<svn-getting-started-ports-layout>>). | |`ssh://git@gitrepo.FreeBSD.org/ports.git` (see also <<git-getting-started-ports-layout>>). | |||||||||
|_Internal Mailing Lists_ | |_Internal Mailing Lists_ | |||||||||
|developers (technically called all-developers), doc-developers, doc-committers, ports-developers, ports-committers, src-developers, src-committers. (Each project repository has its own -developers and -committers mailing lists. Archives for these lists can be found in the files [.filename]#/local/mail/repository-name-developers-archive# and [.filename]#/local/mail/repository-name-committers-archive# on the `FreeBSD.org` cluster.) | |developers (technically called all-developers), doc-developers, doc-committers, ports-developers, ports-committers, src-developers, src-committers. (Each project repository has its own -developers and -committers mailing lists. Archives for these lists can be found in the files [.filename]#/local/mail/repository-name-developers-archive# and [.filename]#/local/mail/repository-name-committers-archive# on the `FreeBSD.org` cluster.) | |||||||||
|_Core Team monthly reports_ | |_Core Team monthly reports_ | |||||||||
|[.filename]#/home/core/public/monthly-reports# on the `FreeBSD.org` cluster. | |[.filename]#/home/core/public/monthly-reports# on the `FreeBSD.org` cluster. | |||||||||
|_Ports Management Team monthly reports_ | |_Ports Management Team monthly reports_ | |||||||||
▲ Show 20 Lines • Show All 384 Lines • ▼ Show 20 Lines | ||||||||||
If it's good you'd type 'git bisect good' otherwise 'git bisect bad'. | If it's good you'd type 'git bisect good' otherwise 'git bisect bad'. | |||||||||
If the version doesn't compile, type 'git bisect skip'. | If the version doesn't compile, type 'git bisect skip'. | |||||||||
You will get a similar message to the above after each step. | You will get a similar message to the above after each step. | |||||||||
When you are done, report the bad version to the developer (or fix the bug yourself and send a patch). | When you are done, report the bad version to the developer (or fix the bug yourself and send a patch). | |||||||||
'git bisect reset' will end the process and return you back to where you started (usually tip of main). | 'git bisect reset' will end the process and return you back to where you started (usually tip of main). | |||||||||
Again, the git-bisect manual (linked above) is a good resource for when things go wrong or for unusual cases. | Again, the git-bisect manual (linked above) is a good resource for when things go wrong or for unusual cases. | |||||||||
==== Ports Considerations | ==== Ports Considerations | |||||||||
The ports migration is in progress, and some of this section may change before that is complete. | ||||||||||
The ports tree operates the same way. | The ports tree operates the same way. | |||||||||
The branch names are different and the repositories are in different locations. | The branch names are different and the repositories are in different locations. | |||||||||
The legacy GitHub mirror is at https://github.com/freebsd/freebsd-ports.git . | The cgit repository web interface for use with web browsers is at https://cgit.freebsd.org/ports.git . | |||||||||
Done Inline ActionsLegacy GitHub mirror is at https://github.com/freebsd/freebsd-ports-legacy.git , which I don't think we need to mention. We just need link to https://docs.freebsd.org/en/books/handbook/mirrors/#_external_mirrors (and add ports) there. lwhsu: Legacy GitHub mirror is at https://github.com/freebsd/freebsd-ports-legacy.git , which I don't… | ||||||||||
Not Done Inline Actionshttps://github.com/freebsd/freebsd-ports.git is NOT legacy GitHub mirror. It's the official mirror. I suggest just remove this and link to https://docs.freebsd.org/en/books/handbook/mirrors/#_external_mirrors lwhsu: `https://github.com/freebsd/freebsd-ports.git` is NOT legacy GitHub mirror. It's the official… | ||||||||||
The canonical cgit mirror is https://cgit-beta.freebsd.org/ports.git . | The production git repository is at https://git.freebsd.org/ports.git and at ssh://anongit@git.FreeBSD.org/ports.git (or anongit@git.FreeBSD.org:ports.git). | |||||||||
Done Inline Actionscgit is not mirror, it's web interface to git repository. so maybe: lwhsu: cgit is not mirror, it's web interface to git repository. so maybe:
`The cgit repository web… | ||||||||||
Not Done Inline ActionsThis has been marked done but not changed? lwhsu: This has been marked done but not changed? | ||||||||||
Not Done Inline Actionsfreebsd -> FreeBSD lwhsu: `freebsd` -> `FreeBSD` | ||||||||||
The production git repo will be https://git.freebsd.org/ports.git and ssh://anongit@git.FreeBSD.org/ports.git (or anongit@git.FreeBSD.org:ports.git) when the time comes. | ||||||||||
The 'current' branches are 'master' (legacy) and 'main' (new) respectively. | The 'current' branch is 'main' . | |||||||||
Done Inline Actionsmaybe we can remove mentioning to master now? lwhsu: maybe we can remove mentioning to `master` now? | ||||||||||
The quarterly branches are named the same as in FreeBSD's svn repo. | The quarterly branches are named 'yyyyQn' for year 'yyyy' and quarter 'n'. | |||||||||
Done Inline ActionsIMO we should avoid unqualified "before" -- before what? Maybe "named the same as they were in svn, branches/yyyyQn"? emaste: IMO we should avoid unqualified "before" -- before what? Maybe "named the same as they were in… | ||||||||||
Done Inline Actions
mat: | ||||||||||
Done Inline ActionsEven better :) rene: Even better :) | ||||||||||
Done Inline ActionsOk, the quarterly branch will hopefully loose the branches/ prefix, so it should be removed here too. mat: Ok, the quarterly branch will hopefully loose the `branches/` prefix, so it should be removed… | ||||||||||
[NOTE] | ||||||||||
==== | ||||||||||
The cgit repo for ports is considered beta. | ||||||||||
The git hashes may change as problems are found in the conversion prior to the cutover. | ||||||||||
==== | ||||||||||
==== Managing Local Changes | ==== Managing Local Changes | |||||||||
This section addresses tracking local changes. | This section addresses tracking local changes. | |||||||||
If you have no local changes, you can stop reading now (it is the last section and OK to skip). | If you have no local changes, you can stop reading now (it is the last section and OK to skip). | |||||||||
One item that is important for all of them: all changes are local until pushed. | One item that is important for all of them: all changes are local until pushed. | |||||||||
Unlike svn, git uses a distributed model. | Unlike svn, git uses a distributed model. | |||||||||
For users, for most things, there is very little difference. | For users, for most things, there is very little difference. | |||||||||
However, if you have local changes, you can use the same tool to manage them as you use to pull in changes from FreeBSD. | However, if you have local changes, you can use the same tool to manage them as you use to pull in changes from FreeBSD. | |||||||||
▲ Show 20 Lines • Show All 1,661 Lines • ▼ Show 20 Lines | ||||||||||
* _documentation/_ contains all the source code for the documentation part of the tree. | * _documentation/_ contains all the source code for the documentation part of the tree. | |||||||||
* _documentation/content/LANG/articles/_ contains the source code for articles written by various FreeBSD contributors. | * _documentation/content/LANG/articles/_ contains the source code for articles written by various FreeBSD contributors. | |||||||||
* _documentation/content/LANG/books/_ contains the source code for the different books, such as the FreeBSD Handbook. | * _documentation/content/LANG/books/_ contains the source code for the different books, such as the FreeBSD Handbook. | |||||||||
* _website/_ contains the source code for the FreeBSD website. | * _website/_ contains the source code for the FreeBSD website. | |||||||||
LANG above is the two character language code. | LANG above is the two character language code. | |||||||||
All document source is encoded using Unicode. | All document source is encoded using Unicode. | |||||||||
[[svn-getting-started-ports-layout]] | [[git-getting-started-ports-layout]] | |||||||||
Done Inline ActionsWhen you change an anchor name, you do have to check that anything referencing it in the whole documentation also gets updated. I have no idea if it is the case for this one, just saying. mat: When you change an anchor name, you do have to check that anything referencing it in the whole… | ||||||||||
==== FreeBSD Ports Tree Branches and Layout | ==== FreeBSD Ports Tree Branches and Layout | |||||||||
In `svn+ssh://repo.freebsd.org/ports`, _ports_ refers to the repository root of the ports tree. | In `ssh://gitrepo.freebsd.org/ports.git`, _ports_ refers to the repository root of the ports tree. | |||||||||
Not Done Inline Actionsfreebsd -> FreeBSD lwhsu: `freebsd` -> `FreeBSD` | ||||||||||
In general, most FreeBSD port work will be done within the [.filename]#head/# branch of the ports tree which is the actual ports tree used to install software. | In general, most FreeBSD port work will be done within the `main` branch of the ports tree which is the actual ports tree used to install software. | |||||||||
Some other key locations are: | Some other key locations are: | |||||||||
* /branches/RELENG_n_n_n which corresponds to `RELENG_n_n_n` is used to merge back security updates in preparation for a release. | * `yyyyQn` (a branch), where `yyyy` represents the current year and `n` represents the current quarter (e.g. 2021Q2), which receives mostly security and bugfixes. | |||||||||
Done Inline ActionsAs the release packages are built from the current quarterly branch, it should probably say that this was only used a few times and before quarterly existed. mat: As the release packages are built from the current quarterly branch, it should probably say… | ||||||||||
Done Inline ActionsOr perhaps just drop that line (branches/RELENG_n_n_n) ? rene: Or perhaps just drop that line (branches/RELENG_n_n_n) ? | ||||||||||
Done Inline Actionswe don't have RELENG_n_n_n branches, they are tags (in below) lwhsu: we don't have RELENG_n_n_n branches, they are tags (in below) | ||||||||||
Done Inline Actions/branches/yyyyQn -> yyyyQn ? lwhsu: `/branches/yyyyQn` -> `yyyyQn` ? | ||||||||||
Done Inline ActionsAnd the description sounds weird to me. Do we have literally a yyyyQn branch (and points to the latest quarterly branch)? I think just mentioning ... which represent the quarterly branches, (e.g. 2021Q2) should be fine. (While that's a good idea to have a quarterly branch points to the latest one.) lwhsu: And the description sounds weird to me. Do we have literally a `yyyyQn` branch (and points to… | ||||||||||
Done Inline ActionsI rephrased it a bit, hopefully more clear now. rene: I rephrased it a bit, hopefully more clear now. | ||||||||||
Done Inline Actionswhat we have is release/x.y.z lwhsu: what we have is `release/x.y.z` | ||||||||||
* /tags/RELEASE_n_n_n which corresponds to `RELEASE_n_n_n` represents a release tag of the ports tree. | * release/`x.y.z` (a tag), which represents a release tag of the ports tree. | |||||||||
Done Inline Actionswhat we have is release/x.y.z, e.g. release/13.0.0, note it is . not _. lwhsu: what we have is `release/x.y.z`, e.g. `release/13.0.0`, note it is `.` not `_`. | ||||||||||
Not Done Inline ActionsThis has been marked done but not changed? release/x_y_z -> release/x.y.z lwhsu: This has been marked done but not changed?
release/x_y_z -> release/x.y.z | ||||||||||
* /tags/RELEASE_n_EOL represents the end of life tag of a specific FreeBSD branch. | * `n`-eol (a tag), which represents the end of life tag of FreeBSD branch `n.X`. | |||||||||
Done Inline Actionswhat we currently have is n-eol without prefix lwhsu: what we currently have is `n-eol` without prefix | ||||||||||
[[svn-daily-use]] | [[svn-daily-use]] | |||||||||
=== Daily Use | === Daily Use | |||||||||
This section will explain how to perform common day-to-day operations with Subversion. | This section will explain how to perform common day-to-day operations with Subversion. | |||||||||
[[svn-daily-use-help]] | [[svn-daily-use-help]] | |||||||||
==== Help | ==== Help | |||||||||
▲ Show 20 Lines • Show All 115 Lines • ▼ Show 20 Lines | ||||||||||
To commit all changes in, for example, [.filename]#lib/libfetch/# and [.filename]#usr/bin/fetch/# in a single operation: | To commit all changes in, for example, [.filename]#lib/libfetch/# and [.filename]#usr/bin/fetch/# in a single operation: | |||||||||
[source,shell] | [source,shell] | |||||||||
.... | .... | |||||||||
% svn commit lib/libfetch usr/bin/fetch | % svn commit lib/libfetch usr/bin/fetch | |||||||||
.... | .... | |||||||||
There is also a commit wrapper for the ports tree to handle the properties and sanity checking the changes: | ||||||||||
[source,shell] | ||||||||||
.... | ||||||||||
% /usr/ports/Tools/scripts/psvn commit | ||||||||||
.... | ||||||||||
Not Done Inline ActionsI'd planned on deorbiting the entire svn section soon. Maybe drop this from your change to avoid conflicts? imp: I'd planned on deorbiting the entire svn section soon. Maybe drop this from your change to… | ||||||||||
Done Inline ActionsThe psvn script has already been removed from the ports repository, and it should be an easy conflict? rene: The psvn script has already been removed from the ports repository, and it should be an easy… | ||||||||||
[[svn-daily-use-adding-and-removing]] | [[svn-daily-use-adding-and-removing]] | |||||||||
==== Adding and Removing Files | ==== Adding and Removing Files | |||||||||
[NOTE] | [NOTE] | |||||||||
==== | ==== | |||||||||
Before adding files, get a copy of https://people.FreeBSD.org/~peter/auto-props.txt[auto-props.txt] (there is also a https://people.FreeBSD.org/~beat/cvs2svn/auto-props.txt[ports tree specific version]) and add it to [.filename]#~/.subversion/config# according to the instructions in the file. | Before adding files, get a copy of https://people.FreeBSD.org/~peter/auto-props.txt[auto-props.txt] (there is also a https://people.FreeBSD.org/~beat/cvs2svn/auto-props.txt[ports tree specific version]) and add it to [.filename]#~/.subversion/config# according to the instructions in the file. | |||||||||
If you added something before reading this, use `svn rm --keep-local` for just added files, fix your config file and re-add them again. | If you added something before reading this, use `svn rm --keep-local` for just added files, fix your config file and re-add them again. | |||||||||
The initial config file is created when you first run a svn command, even something as simple as `svn help`. | The initial config file is created when you first run a svn command, even something as simple as `svn help`. | |||||||||
▲ Show 20 Lines • Show All 1,820 Lines • ▼ Show 20 Lines | ||||||||||
==== | ==== | |||||||||
When using Git, consider using `git grep`, it is much faster than `grep -r`. | When using Git, consider using `git grep`, it is much faster than `grep -r`. | |||||||||
==== | ==== | |||||||||
+ | + | |||||||||
* Then, remove the port: | * Then, remove the port: | |||||||||
+ | + | |||||||||
[.procedure] | [.procedure] | |||||||||
==== | ==== | |||||||||
* Remove the port's files and directory with `svn remove`. | * Remove the port's files and directory with `git rm`. | |||||||||
* Remove the `SUBDIR` listing of the port in the parent directory [.filename]#Makefile#. | * Remove the `SUBDIR` listing of the port in the parent directory [.filename]#Makefile#. | |||||||||
* Add an entry to [.filename]#ports/MOVED#. | * Add an entry to [.filename]#ports/MOVED#. | |||||||||
* Search for entries in [.filename]#ports/security/vuxml/vuln.xml# and adjust them accordingly. In particular, check for previous packages with the new name which version could include the new port. | * Search for entries in [.filename]#ports/security/vuxml/vuln.xml# and adjust them accordingly. In particular, check for previous packages with the new name which version could include the new port. | |||||||||
* Remove the port from [.filename]#ports/LEGAL# if it is there. | * Remove the port from [.filename]#ports/LEGAL# if it is there. | |||||||||
==== | ==== | |||||||||
Alternatively, you can use the rmport script, from [.filename]#ports/Tools/scripts#. | Alternatively, you can use the rmport script, from [.filename]#ports/Tools/scripts#. | |||||||||
This script was written by {vd}. | This script was written by {vd}. | |||||||||
When sending questions about this script to the {freebsd-ports}, please also CC {crees}, the current maintainer. | When sending questions about this script to the {freebsd-ports}, please also CC {crees}, the current maintainer. | |||||||||
[[ports-qa-re-adding]] | [[ports-qa-move-port]] | |||||||||
=== Re-adding a Deleted Port | === How do I move a port to a new location? | |||||||||
[[ports-qa-resurrect]] | ||||||||||
==== How do I re-add a deleted port? | ||||||||||
This is essentially the reverse of deleting a port. | ||||||||||
[IMPORTANT] | ||||||||||
==== | ||||||||||
Do not use `svn add` to add the port. | ||||||||||
Follow these steps. | ||||||||||
If they are unclear, or are not working, ask for help, do not just `svn add` the port. | ||||||||||
==== | ||||||||||
[.procedure] | [.procedure] | |||||||||
Done Inline ActionsThere is only one way, it involves creating a branch just before the port was removed, and merging it back to main, but I don't think anyone wants to do that because "history looks horrible" using the current git tools. I'd say this paragraph should probably not be added. mat: There is only one way, it involves creating a branch just before the port was removed, and… | ||||||||||
Done Inline ActionsFair enough. We can always add something later on. rene: Fair enough. We can always add something later on. | ||||||||||
Done Inline ActionsGit appears actually to DTRT with readded ports- the old history is tacked on just fine. I think that part of addport can just go, as I suggested in the original discussion. Unfortunately copies it doesn't do well, but that's not in scope here. This section can just go. crees: Git appears actually to DTRT with readded ports- the old history is tacked on just fine. I… | ||||||||||
Done Inline ActionsAlso slightly rewritten the next section (moving a port) to not have dangling textual references to the now removed sections. rene: Also slightly rewritten the next section (moving a port) to not have dangling textual… | ||||||||||
==== | ==== | |||||||||
. Figure out when the port was removed. Use this link:https://people.freebsd.org/~crees/removed_ports/index.xml[list], or look for the port on link:http://www.freshports.org/[freshports], and then copy the last living revision of the port: | . Perform a thorough check of the ports collection for any dependencies on the old port location/name, and update them. Running `grep` on [.filename]#INDEX# is not enough because some ports have dependencies enabled by compile-time options. A full `git grep` of the ports collection is recommended. | |||||||||
+ | . Remove the `SUBDIR` entry from the old category Makefile and add a `SUBDIR` entry to the new category Makefile. | |||||||||
[source,shell] | ||||||||||
.... | ||||||||||
% cd /usr/ports/category | ||||||||||
% svn cp 'svn+ssh://repo.freebsd.org/ports/head/category/portname/@XXXXXX' portname | ||||||||||
.... | ||||||||||
+ | ||||||||||
Pick the revision that is just before the removal. For example, if the revision where it was removed is 269874, use 269873. | ||||||||||
+ | ||||||||||
It is also possible to specify a date. In that case, pick a date that is before the removal but after the last commit to the port. | ||||||||||
+ | ||||||||||
[source,shell] | ||||||||||
.... | ||||||||||
% cd /usr/ports/category | ||||||||||
% svn cp 'svn+ssh://repo.freebsd.org/ports/head/category/portname/@{YYYY-MM-DD}' portname | ||||||||||
.... | ||||||||||
+ | ||||||||||
. Make the changes necessary to get the port working again. If it was deleted because the distfiles are no longer available, either volunteer to host the distfiles, or find someone else to do so. | ||||||||||
. If some files have been added, or were removed during the resurrection process, use `svn add` or `svn remove` to make sure all the files in the port will be committed. | ||||||||||
. Restore the `SUBDIR` listing of the port in the parent directory [.filename]#Makefile#, keeping the entries sorted. | ||||||||||
. Delete the port entry from [.filename]#ports/MOVED#. | ||||||||||
. If the port had an entry in [.filename]#ports/LEGAL#, restore it. | ||||||||||
. `svn commit` these changes, preferably in one step. | ||||||||||
==== | ||||||||||
[TIP] | ||||||||||
==== | ||||||||||
The `addport` script mentioned in <<ports-qa-adding>> now detects when the port to add has previously existed, and attempts to handle all except the `ports/LEGAL` step automatically. | ||||||||||
==== | ||||||||||
[[ports-qa-repocopies]] | ||||||||||
=== Repository Copies | ||||||||||
[[ports-qa-repocopy-when]] | ||||||||||
==== When do we need a repository copy? | ||||||||||
When you want to add a port that is related to any port that is already in the tree in a separate directory, you have to do a repository copy. | ||||||||||
Here related means it is a different version or a slightly modified version. | ||||||||||
Examples are [.filename]#print/ghostscript*# (different versions) and [.filename]#x11-wm/windowmaker*# (English-only and internationalized version). | ||||||||||
Another example is when a port is moved from one subdirectory to another, or when the name of a directory must be changed because the authors renamed their software even though it is a descendant of a port already in a tree. | ||||||||||
[[ports-qa-repocopy-how]] | ||||||||||
==== What do I need to do? | ||||||||||
With Subversion, a repo copy can be done by any committer: | ||||||||||
* Doing a repo copy: | ||||||||||
[.procedure] | ||||||||||
==== | ||||||||||
. Verify that the target directory does not exist. | ||||||||||
. Use `svn up` to make certain the original files, directories, and checkout information is current. | ||||||||||
. Use `svn move` or `svn copy` to do the repo copy. | ||||||||||
. Upgrade the copied port to the new version. Remember to add or change the `PKGNAMEPREFIX` or `PKGNAMESUFFIX` so there are no duplicate ports with the same name. In some rare cases it may be necessary to change the `PORTNAME` instead of adding `PKGNAMEPREFIX` or `PKGNAMESUFFIX`, but this is only done when it is really needed — for example, using an existing port as the base for a very similar program with a different name, or upgrading a port to a new upstream version which actually changes the distribution name, like the transition from [.filename]#textproc/libxml# to [.filename]#textproc/libxml2#. In most cases, adding or changing `PKGNAMEPREFIX` or `PKGNAMESUFFIX` suffices. | ||||||||||
. Add the new subdirectory to the `SUBDIR` listing in the parent directory [.filename]#Makefile#. You can run make checksubdirs in the parent directory to check this. | ||||||||||
. If the port changed categories, modify the CATEGORIES line of the port's [.filename]#Makefile# accordingly | ||||||||||
. Add an entry to [.filename]#ports/MOVED#, if you remove the original port. | ||||||||||
. Commit all changes on one commit. | ||||||||||
==== | ||||||||||
* When removing a port: | ||||||||||
[.procedure] | ||||||||||
==== | ||||||||||
. Perform a thorough check of the ports collection for any dependencies on the old port location/name, and update them. Running `grep` on [.filename]#INDEX# is not enough because some ports have dependencies enabled by compile-time options. A full `grep -r` of the ports collection is recommended. | ||||||||||
. Remove the old port and the old `SUBDIR` entry. | ||||||||||
. Add an entry to [.filename]#ports/MOVED#. | . Add an entry to [.filename]#ports/MOVED#. | |||||||||
. Move the port with `git mv`. | ||||||||||
. Commit the changes. | ||||||||||
Done Inline ActionsThere is no way for this to exist, unless git starts tracking moves and copies. The paragraph should probably not be added in the first place. mat: There is no way for this to exist, unless git starts tracking moves and copies. The paragraph… | ||||||||||
==== | ==== | |||||||||
* After repo moves (“rename” operations where a port is copied and the old location is removed): | ||||||||||
[.procedure] | ||||||||||
==== | ||||||||||
* Follow the same steps that are outlined in the previous two entries, to activate the new location of the port and remove the old one. | ||||||||||
==== | ||||||||||
[[ports-qa-freeze]] | [[ports-qa-freeze]] | |||||||||
=== Ports Freeze | === Ports Freeze | |||||||||
[[ports-qa-freeze-what]] | [[ports-qa-freeze-what]] | |||||||||
==== What is a “ports freeze”? | ==== What is a “ports freeze”? | |||||||||
A “ports freeze” was a restricted state the ports tree was put in before a release. | A “ports freeze” was a restricted state the ports tree was put in before a release. | |||||||||
It was used to ensure a higher quality for the packages shipped with a release. | It was used to ensure a higher quality for the packages shipped with a release. | |||||||||
▲ Show 20 Lines • Show All 64 Lines • ▼ Show 20 Lines | ||||||||||
[IMPORTANT] | [IMPORTANT] | |||||||||
==== | ==== | |||||||||
Commits that are not covered by these blanket approvals always require explicit approval of either {ports-secteam} or {portmgr}. | Commits that are not covered by these blanket approvals always require explicit approval of either {ports-secteam} or {portmgr}. | |||||||||
==== | ==== | |||||||||
[[ports-qa-misc-commit-mfh]] | [[ports-qa-misc-commit-mfh]] | |||||||||
==== What is the procedure for merging commits to the quarterly branch? | ==== What is the procedure for merging commits to the quarterly branch? | |||||||||
A script is provided to automate merging a specific commit: [.filename]#ports/Tools/scripts/mfh#. It is used as follows: | Merging commits to the quarterly branch is very similar to MFC'ing a commit in the src repository, so basically: | |||||||||
Not Done Inline ActionsI suggest adding: While note that the "merge" concept in git is different than svn. What we actually do is using cherry-pick to apply patch from the specified commit in `main` to the target branch. lwhsu: I suggest adding:
```
While note that the "merge" concept in git is different than svn. What… | ||||||||||
[source,shell] | [source,shell] | |||||||||
.... | .... | |||||||||
% /usr/ports/Tools/scripts/mfh 380362 | % git checkout 2021Q2 | |||||||||
U 2015Q1 | % git cherry-pick -x $HASH | |||||||||
Checked out revision 380443. | (verify everything is OK, for example by doing a build test) | |||||||||
Done Inline Actionswe might want to give suggestions about how/what to verify? emaste: we might want to give suggestions about how/what to verify? | ||||||||||
Done Inline Actions"build test" would be enough. mat: "build test" would be enough. | ||||||||||
A 2015Q1/security | % git push | |||||||||
Updating '2015Q1/security/rubygem-sshkit': | ||||||||||
A 2015Q1/security/rubygem-sshkit | ||||||||||
A 2015Q1/security/rubygem-sshkit/Makefile | ||||||||||
A 2015Q1/security/rubygem-sshkit/distinfo | ||||||||||
A 2015Q1/security/rubygem-sshkit/pkg-descr | ||||||||||
Updated to revision 380443. | ||||||||||
--- Merging r380362 into '2015Q1': | ||||||||||
U 2015Q1/security/rubygem-sshkit/Makefile | ||||||||||
U 2015Q1/security/rubygem-sshkit/distinfo | ||||||||||
--- Recording mergeinfo for merge of r380362 into '2015Q1': | ||||||||||
U 2015Q1 | ||||||||||
--- Recording mergeinfo for merge of r380362 into '2015Q1/security': | ||||||||||
G 2015Q1/security | ||||||||||
--- Eliding mergeinfo from '2015Q1/security': | ||||||||||
U 2015Q1/security | ||||||||||
--- Recording mergeinfo for merge of r380362 into '2015Q1/security/rubygem-sshkit': | ||||||||||
G 2015Q1/security/rubygem-sshkit | ||||||||||
--- Eliding mergeinfo from '2015Q1/security/rubygem-sshkit': | ||||||||||
U 2015Q1/security/rubygem-sshkit | ||||||||||
M 2015Q1 | ||||||||||
M 2015Q1/security/rubygem-sshkit/Makefile | ||||||||||
M 2015Q1/security/rubygem-sshkit/distinfo | ||||||||||
Index: 2015Q1/security/rubygem-sshkit/Makefile | ||||||||||
=================================================================== | ||||||||||
--- 2015Q1/security/rubygem-sshkit/Makefile (revision 380443) | ||||||||||
+++ 2015Q1/security/rubygem-sshkit/Makefile (working copy) | ||||||||||
@@ -2,7 +2,7 @@ | ||||||||||
# $FreeBSD$ | ||||||||||
PORTNAME= sshkit | ||||||||||
-PORTVERSION= 1.6.1 | ||||||||||
+PORTVERSION= 1.7.0 | ||||||||||
CATEGORIES= security rubygems | ||||||||||
MASTER_SITES= RG | ||||||||||
Index: 2015Q1/security/rubygem-sshkit/distinfo | ||||||||||
=================================================================== | ||||||||||
--- 2015Q1/security/rubygem-sshkit/distinfo (revision 380443) | ||||||||||
+++ 2015Q1/security/rubygem-sshkit/distinfo (working copy) | ||||||||||
@@ -1,2 +1,2 @@ | ||||||||||
-SHA256 (rubygem/sshkit-1.6.1.gem) = 8ca67e46bb4ea50fdb0553cda77552f3e41b17a5aa919877d93875dfa22c03a7 | ||||||||||
-SIZE (rubygem/sshkit-1.6.1.gem) = 135680 | ||||||||||
+SHA256 (rubygem/sshkit-1.7.0.gem) = 90effd1813363bae7355f4a45ebc8335a8ca74acc8d0933ba6ee6d40f281a2cf | ||||||||||
+SIZE (rubygem/sshkit-1.7.0.gem) = 136192 | ||||||||||
Index: 2015Q1 | ||||||||||
=================================================================== | ||||||||||
--- 2015Q1 (revision 380443) | ||||||||||
+++ 2015Q1 (working copy) | ||||||||||
Property changes on: 2015Q1 | ||||||||||
___________________________________________________________________ | ||||||||||
Modified: svn:mergeinfo | ||||||||||
Merged /head:r380362 | ||||||||||
Do you want to commit? (no = start a shell) [y/n] | ||||||||||
.... | .... | |||||||||
At that point, the script will either open a shell for you to fix things, or open your text editor with the commit message all prepared and then commit the merge. | where '$HASH' is the hash of the commit you want to copy over to the quarterly branch. | |||||||||
The -x parameter ensures the hash '$HASH' of the main branch is included in the new commit message of the quarterly branch. | ||||||||||
Done Inline Actionstypo, recorded but maybe "of the main branch is included in the new commit message on the quarterly branch." emaste: typo, recorded
but maybe "of the main branch is included in the new commit message on the… | ||||||||||
The script assumes that you can connect to `repo.FreeBSD.org` with SSH directly, so if your local login name is different than your FreeBSD cluster account, you need a few lines in your [.filename]#~/.ssh/config#: | ||||||||||
[.programlisting] | ||||||||||
.... | ||||||||||
Host *.freebsd.org | ||||||||||
User freebsd-login | ||||||||||
.... | ||||||||||
[TIP] | ||||||||||
==== | ||||||||||
The script is also able to merge more than one revision at a time. | ||||||||||
If there have been other updates to the port since the branch was created that have not been merged because they were not security related. | ||||||||||
Add the different revisions in the order they were committed on the `mfh` line. | ||||||||||
The new commit log message will contain the combined log messages from all the original commits. | ||||||||||
These messages must be edited to show what is actually being done with the new commit. | ||||||||||
[source,shell] | ||||||||||
.... | ||||||||||
% /usr/ports/Tools/scripts/mfh r407208 r407713 r407722 r408567 r408943 r410728 | ||||||||||
.... | ||||||||||
==== | ||||||||||
[NOTE] | ||||||||||
==== | ||||||||||
The mfh script can also take an optional first argument, the branch where the merge is being done. | ||||||||||
Only the latest quarterly branch is supported, so specifying the branch is discouraged. | ||||||||||
To be safe, the script will give a warning if the quarterly branch is not the latest: | ||||||||||
[source,shell] | ||||||||||
.... | ||||||||||
% /usr/ports/Tools/scripts/mfh 2016Q1 r407208 r407713 | ||||||||||
/!\ The latest branch is 2016Q2, do you really want to commit to 2016Q1? [y/n] | ||||||||||
.... | ||||||||||
==== | ||||||||||
[[ports-qa-new-category]] | [[ports-qa-new-category]] | |||||||||
=== Creating a New Category | === Creating a New Category | |||||||||
[[ports-qa-new-category-how]] | [[ports-qa-new-category-how]] | |||||||||
==== What is the procedure for creating a new category? | ==== What is the procedure for creating a new category? | |||||||||
Please see link:{porters-handbook}#proposing-categories[Proposing a New Category] in the Porter's Handbook. | Please see link:{porters-handbook}#proposing-categories[Proposing a New Category] in the Porter's Handbook. | |||||||||
▲ Show 20 Lines • Show All 221 Lines • Show Last 20 Lines |
Git repository