Recurring forgefriends sync / rebase on Gitea

This topic keeps track of the weekly synchronization of the forgefriends repository to track the main branch of Gitea.

As of today:

$ git log --no-decorate --oneline --no-merges gitea/main..origin/main
314ab214d activitypub: signing http client
e72d8d58c activitypub: go-fed conformant Clock instance
4d09135ae go.mod: add go-fed/httpsig dependency (#14186)
6bf561516 https://github.com/go-gitea/gitea/pull/16834 (part 2)
e1254e06f activitypub: add the public key to Person (#14186)
1cdc1596d go.mod: add go-fed/activty/pub dependency (#14186)
eb28575bb https://github.com/go-gitea/gitea/pull/16834
41574c3dd activitypub: implement /api/v1/activitypub/user/{username} (#14186)
eabe93a50 go.mod: add go-fed dependency (#14186)
8e43d2e66 gitignore: emacs backups
de98d1860 ci: setup GitLab CI

It turns out that there are rather frequent and significant refactoring in the gitea codebase, which makes the merge strategy inconvenient (or difficult to read). It will be replaced with a feature branches, each carrying a self contained set of changes, that can be rebased onto the main gitea branch. These branches will then be merged into the main forgefriends branch.

The latest forgefriends branch is kept around for archive under the name main-2021-11.

The conventions for maintaining the feature branches are described in a guide.

As of today:

$ git log --oneline --no-merges gitea/main..origin/main
dca7af25c (HEAD -> main, origin/main, origin/feature-activitypub, feature-activitypub) activitypub: implement Repository
e8677611f activitypub: hack_16834
970ae9403 activitypub: implement the ReqSignature middleware
15f45756f activitypub: signing http client
07928ac20 activitypub: go-fed conformant Clock instance
5ba5382b1 activitypub: add the public key to Person (#14186)
911138d8c activitypub: implement /api/v1/activitypub/user/{username} (#14186)
e31f60cc8 (origin/feature-projectbase, feature-projectbase) repo: add a .projectbase repository to each project
216b788ea repository: cloneLink(suffix) instead of cloneLink(isWiki)
f164a65a6 (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups
e3490af21 (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
a38b3bea9 CI: unit tests for models race with each other and sometime fail
e89134b18 ci: setup GitLab CI
84f8b9192 (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/httpsig dependency (#14186)
88b71226c go.mod: add go-fed/activty/pub dependency (#14186)
c716a14e1 go.mod: add go-fed dependency (#14186)

As of today:

$ git log --oneline --no-merges gitea/main..origin/main
bbec2f378 (origin/main, origin/feature-activitypub, main, feature-activitypub) activitypub: implement Repository
b0e62c848 activitypub: hack_16834
90e7d7f7e activitypub: implement the ReqSignature middleware
5f33a3302 activitypub: signing http client
f0e2cc174 activitypub: go-fed conformant Clock instance
35cfcf3a3 activitypub: add the public key to Person (#14186)
7601dbc8c activitypub: implement /api/v1/activitypub/user/{username} (#14186)
a88a3df66 (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
bbc588200 repo: add a .projectbase repository to each project
cff7128d0 repository: cloneLink(suffix) instead of cloneLink(isWiki)
d949fcb05 (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups
1d030bca2 (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
153f7b214 CI: unit tests for models race with each other and sometime fail
5e945051d CI: setup GitLab CI
fdc01ebda (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/httpsig dependency (#14186)
bbe81f309 go.mod: add go-fed/activty/pub dependency (#14186)
f03baf29e go.mod: add go-fed dependency (#14186)

As of today:

$ git log --oneline --no-merges gitea/main..origin/main
ba8f45795 (HEAD -> main, origin/main, origin/feature-activitypub, feature-activitypub) activitypub: implement Repository
7dab6c39d activitypub: hack_16834
9e1c1ad1f activitypub: implement the ReqSignature middleware
d88740ce6 activitypub: signing http client
459b21973 activitypub: go-fed conformant Clock instance
20f6688ca activitypub: add the public key to Person (#14186)
c996d4fff activitypub: implement /api/v1/activitypub/user/{username} (#14186)
2aed47be9 (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
eef302911 repo: add a .projectbase repository to each project
daf2f859e repository: cloneLink(suffix) instead of cloneLink(isWiki)
3048430dc (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
8421f083f CI: unit tests for models race with each other and sometime fail
4387636b8 CI: setup GitLab CI
ee323b1c1 (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups
eca651baa (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/httpsig dependency (#14186)
5b2626aa0 go.mod: add go-fed/activty/pub dependency (#14186)
22ef32733 go.mod: add go-fed dependency (#14186)

As of today (there were conflicts due to the removal of the vendor directory), it took me about one hour to resolve them for all branches:

$ git log --oneline --no-merges gitea/main..origin/main
3ba2b3bbb (origin/main, origin/feature-activitypub, main, feature-activitypub) activitypub: implement Repository
24e1c3dcc activitypub: hack_16834
8a3c86573 activitypub: implement the ReqSignature middleware
323cdf840 activitypub: signing http client
7a3ac62f2 activitypub: go-fed conformant Clock instance
c023aee5f activitypub: add the public key to Person (#14186)
530967a97 activitypub: implement /api/v1/activitypub/user/{username} (#14186)
3008323ed (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
f7c1894e7 repo: add a .projectbase repository to each project
8c1a9a51d repository: cloneLink(suffix) instead of cloneLink(isWiki)
de3d427c8 (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
ff39ee4a5 CI: unit tests for models race with each other and sometime fail
f523580fe CI: setup GitLab CI
d5e6289aa (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups
b73a5a0d4 (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/{httpsig,activity/pub,activity/streams} dependency (#14186)

Today’s rebasing took three hours because there were conflicts due to:

  • changes made to this merge request
  • widespread refactoring adding a Context argument to many methods/functions
  • renaming of SetSettings and GetSettings to SetUserSettings and GetUserSettings
  • numerous syntactic changes introduced by the switch from gofmt to gofumpt
$ git log --oneline --no-merges gitea/main..origin/main
a9ed92a27 (origin/main, origin/feature-activitypub, main, feature-activitypub) activitypub: implement Repository
00179d9d4 activitypub: hack_16834
4ba7fccbd activitypub: implement the ReqSignature middleware
a973a7bfe activitypub: signing http client
f6772c76d activitypub: go-fed conformant Clock instance
22e278f37 activitypub: add the public key to Person (#14186)
994a0727c activitypub: implement /api/v1/activitypub/user/{username} (#14186)
fc49dec50 (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
c8022434c repo: add a .projectbase repository to each project
16a4b9c12 repository: cloneLink(suffix) instead of cloneLink(isWiki)
2a14ba308 (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/{httpsig,activity/pub,activity/streams} dependency (#14186)
95d7b9881 (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
93d915dc2 CI: unit tests for models race with each other and sometime fail
d12f061ce CI: setup GitLab CI
7608c5650 (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups 

Today’s rebasing took five minutes, no conflicts

$ git describe gitea/main
v1.17.0-dev-47-g8038610a4
$ git log --oneline --no-merges gitea/main..origin/main
792bf21c3 (HEAD -> main, origin/main, origin/feature-activitypub, feature-activitypub) activitypub: implement Repository
7241d163f activitypub: hack_16834
f83958bd2 activitypub: implement the ReqSignature middleware
439b67f87 activitypub: signing http client
3645f8f37 activitypub: go-fed conformant Clock instance
de4dcf3eb activitypub: add the public key to Person (#14186)
4dd090cab activitypub: implement /api/v1/activitypub/user/{username} (#14186)
5c87b7f96 (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
244c43414 repo: add a .projectbase repository to each project
a40cd7065 repository: cloneLink(suffix) instead of cloneLink(isWiki)
69b581f20 (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/{httpsig,activity/pub,activity/streams} dependency (#14186)
464c41d1b (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
8c1cef6e2 CI: unit tests for models race with each other and sometime fail
559756cd0 CI: setup GitLab CI
a6fb4b3b3 (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups

Today’s rebasing took five minutes, no conflicts

$ git describe gitea/main
v1.17.0-dev-91-g1c5afd17e
$ git log --oneline --no-merges gitea/main..origin/main
c37093b9f (origin/main, origin/feature-activitypub, main, feature-activitypub) activitypub: implement Repository
fd5272f77 activitypub: hack_16834
a8c9d1b84 activitypub: implement the ReqSignature middleware
04d15dcb4 activitypub: signing http client
8fc32180d activitypub: go-fed conformant Clock instance
eed0b96c8 activitypub: add the public key to Person (#14186)
f318026fd activitypub: implement /api/v1/activitypub/user/{username} (#14186)
4645032cd (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
42bd93dd8 repo: add a .projectbase repository to each project
2a8e57aa5 repository: cloneLink(suffix) instead of cloneLink(isWiki)
05ac1fbca (feature-licensing) forgefriends is licensed under AGPLv3+
d73fbb5a5 (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/{httpsig,activity/pub,activity/streams} dependency (#14186)
5bf156e3f (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
229eb8feb CI: unit tests for models race with each other and sometime fail
5aa8ec92e CI: setup GitLab CI
977fdf0d2 (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups

Today’s rebasing took five minutes, no conflicts

$ git describe gitea/main
v1.17.0-dev-106-g8bd89ca29
$ git log --oneline --no-merges gitea/main..origin/main
6c679da76 (origin/main, origin/feature-activitypub, main, feature-activitypub) activitypub: implement Repository
ccb649dec activitypub: hack_16834
38418b29e activitypub: implement the ReqSignature middleware
73d86af5f activitypub: signing http client
eb4b82e04 activitypub: go-fed conformant Clock instance
f23911a88 activitypub: add the public key to Person (#14186)
c45666e79 activitypub: implement /api/v1/activitypub/user/{username} (#14186)
916034e5c (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
6d30c1b50 repo: add a .projectbase repository to each project
74b221e17 repository: cloneLink(suffix) instead of cloneLink(isWiki)
1bd5d5b93 (origin/feature-licensing, feature-licensing) forgefriends is licensed under AGPLv3+
5b4f5b78e (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/{httpsig,activity/pub,activity/streams} dependency (#14186)
35fc87b61 (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
6343c876f CI: unit tests for models race with each other and sometime fail
2ca1a52e8 CI: setup GitLab CI
e3f5c5adf (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups

Today’s rebasing took 30 minutes, conflicts because ctx was added to git.NewCommand.

$ git describe gitea/main
v1.17.0-dev-121-g3a91f845e
$ git log --oneline --no-merges gitea/main..origin/main
c68859882 (HEAD -> main, origin/main, origin/feature-activitypub, feature-activitypub) activitypub: implement Repository
7d7d6372d activitypub: hack_16834
6a60b7e16 activitypub: implement the ReqSignature middleware
9e0f988eb activitypub: signing http client
14f970505 activitypub: go-fed conformant Clock instance
fec800942 activitypub: add the public key to Person (#14186)
865b50d09 activitypub: implement /api/v1/activitypub/user/{username} (#14186)
10863a5ef (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
ea0443495 repo: add a .projectbase repository to each project
ab6845cee repository: cloneLink(suffix) instead of cloneLink(isWiki)
574ddb452 (origin/feature-licensing, feature-licensing) forgefriends is licensed under AGPLv3+
1ba5343e7 (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/{httpsig,activity/pub,activity/streams} dependency (#14186)
b506cd098 (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
44ef3ca99 CI: unit tests for models race with each other and sometime fail
6a3f9307f CI: setup GitLab CI
c87b96871 (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups

Today’s rebasing took 30 minutes, no conflicts. A test fixture changed and projectbase needed fixing.

$ git describe gitea/main
v1.17.0-dev-159-ga39287cd4
$ git log --oneline --no-merges gitea/main..origin/main
ccdc9429b (HEAD -> main, origin/main, origin/feature-activitypub, feature-activitypub) activitypub: implement Repository
0076e9b3a activitypub: hack_16834
8eadf15c4 activitypub: implement the ReqSignature middleware
137f0b7e9 activitypub: signing http client
1c81b127f activitypub: go-fed conformant Clock instance
bf1ec9ace activitypub: add the public key to Person (#14186)
9c6541b41 activitypub: implement /api/v1/activitypub/user/{username} (#14186)
b25f8a133 (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
fff6332a1 repo: add a .projectbase repository to each project
f3061b683 repository: cloneLink(suffix) instead of cloneLink(isWiki)
28203f10b (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
adb8d9b4e CI: unit tests for models race with each other and sometime fail
f3a48411a CI: setup GitLab CI
4f455c26d (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups
7e6b375a3 (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/{httpsig,activity/pub,activity/streams} dependency (#14186)
33559fecb (origin/feature-licensing, feature-licensing) forgefriends is licensed under AGPLv3+

Today’s rebasing took 5 minutes.

$ git describe gitea/main
v1.17.0-dev-165-g08fe6f8c7
$ git log --oneline --no-merges gitea/main..origin/main
16547f5c2 (HEAD -> main, origin/main, origin/feature-activitypub, feature-activitypub) activitypub: implement Repository
688f58bd8 activitypub: hack_16834
f5d86dd04 activitypub: implement the ReqSignature middleware
1f41dfdc8 activitypub: signing http client
1f0fb91ed activitypub: go-fed conformant Clock instance
ded3f267c activitypub: add the public key to Person (#14186)
a9b2e2c6c activitypub: implement /api/v1/activitypub/user/{username} (#14186)
26cc3308e (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
1669d656d repo: add a .projectbase repository to each project
9750aead3 repository: cloneLink(suffix) instead of cloneLink(isWiki)
175375499 (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
2129718f8 CI: unit tests for models race with each other and sometime fail
66a302c11 CI: setup GitLab CI
2b36560a7 (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups
48d196a81 (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/{httpsig,activity/pub,activity/streams} dependency (#14186)
bd724192e (origin/feature-licensing, feature-licensing) forgefriends is licensed under AGPLv3+

Today’s rebasing took 5 minutes.

$ git describe gitea/main
v1.17.0-dev-184-g159c3f48a
$ git log --oneline --no-merges gitea/main..origin/main
48b616835 (origin/main, main) activitypub: implement Repository
a62fa83a0 activitypub: hack_16834
a4082ce65 activitypub: implement the ReqSignature middleware
05c6d4da4 activitypub: signing http client
8f1718052 activitypub: go-fed conformant Clock instance
22213d24c activitypub: add the public key to Person (#14186)
32b4399f7 activitypub: implement /api/v1/activitypub/user/{username} (#14186)
5e718f742 projectbase: implement tests for UpdateProjectBase
bfb0d73f6 repo: add a .projectbase repository to each project
5a6a3323e repository: cloneLink(suffix) instead of cloneLink(isWiki)
92d41bcc1 tests: do not test against the GitHub API
e98679392 CI: unit tests for models race with each other and sometime fail
80e4dfb97 CI: setup GitLab CI
2b36560a7 gitignore: emacs backups
48d196a81 go.mod: add go-fed/{httpsig,activity/pub,activity/streams} dependency (#14186)
bd724192e forgefriends is licensed under AGPLv3+

Today’s rebasing took 5 minutes.

$ git describe gitea/main
v1.17.0-dev-215-g6d55a132a
 git log --oneline --no-merges gitea/main..origin/main
c9d7d6a8e (origin/main, origin/feature-activitypub, main, feature-activitypub) activitypub: implement Repository
77638e71d activitypub: hack_16834
7f43627f4 activitypub: implement the ReqSignature middleware
b1fb4e1d1 activitypub: signing http client
1576d8f60 activitypub: go-fed conformant Clock instance
80c7b070e activitypub: add the public key to Person (#14186)
53b462596 activitypub: implement /api/v1/activitypub/user/{username} (#14186)
ea8ae36e7 (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
f9361ee0c repo: add a .projectbase repository to each project
cd42d9cae repository: cloneLink(suffix) instead of cloneLink(isWiki)
6c687310d (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups
9343d8e1f (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
9e04e1ae1 CI: unit tests for models race with each other and sometime fail
b2836b7ea CI: setup GitLab CI
1e5811c92 (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/{httpsig,activity/pub,activity/streams} dependency (#14186)
b794a1191 (origin/feature-licensing, feature-licensing) forgefriends is licensed under AGPLv3+

Today’s rebasing took 5 minutes.

$ git describe gitea/main
v1.17.0-dev-254-gb24e8d38a
$ git log --oneline --no-merges gitea/main..origin/main
4486aacae (origin/main, origin/feature-activitypub, main, feature-activitypub) activitypub: implement Repository
c2ce7d502 activitypub: hack_16834
792b5ec68 activitypub: implement the ReqSignature middleware
bb04ab8f9 activitypub: signing http client
cd42eaae4 activitypub: go-fed conformant Clock instance
dab9c3f14 activitypub: add the public key to Person (#14186)
92bcba858 activitypub: implement /api/v1/activitypub/user/{username} (#14186)
5155088b0 (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
f1d66a5ec repo: add a .projectbase repository to each project
576505ead repository: cloneLink(suffix) instead of cloneLink(isWiki)
10f194dff (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/{httpsig,activity/pub,activity/streams} dependency (#14186)
feed15171 (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
6aa5cf6d8 CI: unit tests for models race with each other and sometime fail
8967cbedd CI: setup GitLab CI
5b084c6a1 (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups
4d1bd364a (origin/feature-licensing, feature-licensing) forgefriends is licensed under AGPLv3+

Today’s rebasing took 15 minutes. New dependencies required redoing the addition of the go-fed / httpsig commit, which was trivial.

$ git describe gitea/main
v1.17.0-dev-279-g780cf76f6
$ git log --oneline --no-merges gitea/main..origin/main
ce2075fb1 (origin/main, origin/feature-activitypub, main, feature-activitypub) activitypub: implement Repository
3e544f51c activitypub: hack_16834
d0b6f1650 activitypub: implement the ReqSignature middleware
bf06de18f activitypub: signing http client
526afb4dd activitypub: go-fed conformant Clock instance
f685f4e1d activitypub: add the public key to Person (#14186)
660da4248 activitypub: implement /api/v1/activitypub/user/{username} (#14186)
466a5d85d (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
53bfafc8c repo: add a .projectbase repository to each project
53d09482d repository: cloneLink(suffix) instead of cloneLink(isWiki)
bbfe46b16 (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups
d732ead76 (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
1a8a3574e CI: unit tests for models race with each other and sometime fail
15dbe524e CI: setup GitLab CI
a275f0ee4 (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/{httpsig,activity/pub,activity/streams} dependency
fd065c149 (origin/feature-licensing, feature-licensing) forgefriends is licensed under AGPLv3+

Today’s rebasing took 5 minutes.

$ git describe gitea/main
v1.17.0-dev-305-g83a2f79d5
$ git log --oneline --no-merges gitea/main..origin/main
2dd9c2da8 (HEAD -> main, origin/main, origin/feature-activitypub, feature-activitypub) activitypub: implement Repository
5a3f69489 activitypub: hack_16834
77caa0a8d activitypub: implement the ReqSignature middleware
f2877b0fb activitypub: signing http client
6314d0764 activitypub: go-fed conformant Clock instance
015fc3c84 activitypub: add the public key to Person (#14186)
065b195a2 activitypub: implement /api/v1/activitypub/user/{username} (#14186)
1200a9486 (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/{httpsig,activity/pub,activity/streams} dependency
80fe22487 (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
82824b2aa repo: add a .projectbase repository to each project
0184a733f repository: cloneLink(suffix) instead of cloneLink(isWiki)
069de4a6f (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
95de0fb49 CI: unit tests for models race with each other and sometime fail
d8e53c016 CI: setup GitLab CI
2e960ce0d (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups
b93d0a73c (origin/feature-licensing, feature-licensing) forgefriends is licensed under AGPLv3+

Today’s rebasing took 5 minutes.

$ git describe gitea/main
v1.17.0-dev-335-g59b867dc2
$ git log --oneline --no-merges gitea/main..origin/main
aa5e257ae (HEAD -> main, origin/main, origin/feature-activitypub, feature-activitypub) activitypub: implement Repository
7804708a8 activitypub: hack_16834
ede66fe36 activitypub: implement the ReqSignature middleware
1c44f52b8 activitypub: signing http client
d0bdfdebe activitypub: go-fed conformant Clock instance
67d99ef4a activitypub: add the public key to Person (#14186)
203b05346 activitypub: implement /api/v1/activitypub/user/{username} (#14186)
8c2c990cc (origin/feature-projectbase, feature-projectbase) projectbase: implement tests for UpdateProjectBase
418e00add repo: add a .projectbase repository to each project
4b3a2fff1 repository: cloneLink(suffix) instead of cloneLink(isWiki)
253e1e159 (origin/feature-development-environment, feature-development-environment) gitignore: emacs backups
b54673dea (origin/feature-gitlab-ci, feature-gitlab-ci) tests: do not test against the GitHub API
7a466e509 CI: unit tests for models race with each other and sometime fail
f1ae7f4be CI: setup GitLab CI
09edf8a7c (origin/feature-go-fed, feature-go-fed) go.mod: add go-fed/{httpsig,activity/pub,activity/streams} dependency
24edf1cb7 (origin/feature-licensing, feature-licensing) forgefriends is licensed under AGPLv3+