Changeset View
Standalone View
documentation/content/en/articles/committers-guide/_index.adoc
Show First 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | ||||||||||
|`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/_` Subversion Root | |||||||||
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 legacy GitHub mirror is at https://github.com/freebsd/freebsd-ports.git . | |||||||||
The canonical cgit mirror is https://cgit-beta.freebsd.org/ports.git . | The canonical cgit mirror is 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 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 production git repo is https://git.freebsd.org/ports.git and 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 'current' branches are 'master' (legacy) and 'main' (new) respectively. | The 'current' branches are 'master' (legacy) and 'main' (new) respectively. | |||||||||
The quarterly branches are named the same as in FreeBSD's svn repo. | The quarterly branches are named the same as before, 'branches/yyyyQn'. | |||||||||
emasteUnsubmitted 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… | ||||||||||
matUnsubmitted Done Inline Actions
mat: | ||||||||||
reneAuthorUnsubmitted 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… | ||||||||||
Done Inline Actionsmaybe we can remove mentioning to master now? lwhsu: maybe we can remove mentioning to `master` now? | ||||||||||
[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]] | |||||||||
matUnsubmitted 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/yyyyQn which represents the currently quarterly branch (e.g. 2021Q2) which receives mostly security and bugfixes. | ||||||||||
* /branches/RELENG_n_n_n which corresponds to `RELENG_n_n_n` is used to merge back security updates in preparation for a release. | * /branches/RELENG_n_n_n which corresponds to `RELENG_n_n_n` is used to merge back security updates in preparation for a release. | |||||||||
matUnsubmitted 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… | ||||||||||
reneAuthorUnsubmitted 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) ? | ||||||||||
lwhsuUnsubmitted 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. | ||||||||||
* /tags/RELEASE_n_n_n which corresponds to `RELEASE_n_n_n` represents a release tag of the ports tree. | * /tags/RELEASE_n_n_n which corresponds to `RELEASE_n_n_n` represents a release tag of the ports tree. | |||||||||
Done Inline Actionswhat we have is release/x.y.z lwhsu: what we have is `release/x.y.z` | ||||||||||
* /tags/RELEASE_n_EOL represents the end of life tag of a specific FreeBSD branch. | * /tags/RELEASE_n_EOL represents the end of life tag of a specific FreeBSD branch. | |||||||||
Done Inline Actionswhat we currently have is n-eol without prefix lwhsu: what we currently have is `n-eol` without prefix | ||||||||||
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 | ||||||||||
[[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 114 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-re-adding]] | |||||||||
=== Re-adding a Deleted Port | === Re-adding a Deleted Port | |||||||||
[[ports-qa-resurrect]] | [[ports-qa-resurrect]] | |||||||||
==== How do I re-add a deleted port? | ==== How do I re-add a deleted port? | |||||||||
This is essentially the reverse of deleting a port. | This is essentially the reverse of deleting a port. | |||||||||
[NOTE] | ||||||||||
==== | ||||||||||
Currently a way to re-add a port using git which preserves history is being figured out. | ||||||||||
==== | ||||||||||
matUnsubmitted 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… | ||||||||||
reneAuthorUnsubmitted Done Inline ActionsFair enough. We can always add something later on. rene: Fair enough. We can always add something later on. | ||||||||||
creesUnsubmitted 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… | ||||||||||
reneAuthorUnsubmitted 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… | ||||||||||
[IMPORTANT] | [IMPORTANT] | |||||||||
==== | ==== | |||||||||
Do not use `svn add` to add the port. | Do not use `svn add` to add the port. | |||||||||
Follow these steps. | Follow these steps. | |||||||||
If they are unclear, or are not working, ask for help, do not just `svn add` the port. | If they are unclear, or are not working, ask for help, do not just `svn add` the port. | |||||||||
==== | ==== | |||||||||
[.procedure] | [.procedure] | |||||||||
Show All 19 Lines | ||||||||||
. 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. | . 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. | . 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. | . 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#. | . Delete the port entry from [.filename]#ports/MOVED#. | |||||||||
. If the port had an entry in [.filename]#ports/LEGAL#, restore it. | . If the port had an entry in [.filename]#ports/LEGAL#, restore it. | |||||||||
. `svn commit` these changes, preferably in one step. | . `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]] | [[ports-qa-repocopies]] | |||||||||
=== Repository Copies | === Repository Copies | |||||||||
[NOTE] | ||||||||||
==== | ||||||||||
Currently a way to do repository copies using git which preserves history is being figured out. | ||||||||||
Unlike Subversion, git has no native copying command. | ||||||||||
==== | ||||||||||
matUnsubmitted 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… | ||||||||||
[[ports-qa-repocopy-when]] | [[ports-qa-repocopy-when]] | |||||||||
==== When do we need a repository copy? | ==== 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. | 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. | 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). | 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. | 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. | |||||||||
Show All 12 Lines | ||||||||||
. Use `svn move` or `svn copy` to do the repo copy. | . 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. | . 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. | . 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 | . 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. | . Add an entry to [.filename]#ports/MOVED#, if you remove the original port. | |||||||||
. Commit all changes on one commit. | . Commit all changes on one commit. | |||||||||
==== | ==== | |||||||||
* When removing a port: | * When (re)moving a port: | |||||||||
[.procedure] | [.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. | . 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. | . Remove the old port and the old `SUBDIR` entry. | |||||||||
. Add an entry to [.filename]#ports/MOVED#. | . Add an entry to [.filename]#ports/MOVED#. | |||||||||
==== | ==== | |||||||||
▲ Show 20 Lines • Show All 79 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) | |||||||||
emasteUnsubmitted 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? | ||||||||||
matUnsubmitted 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 gets recorced into the new commit message of the quarterly branch. | ||||||||||
emasteUnsubmitted 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