mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2024-11-23 10:56:20 +00:00
150 lines
5.0 KiB
Markdown
150 lines
5.0 KiB
Markdown
# General rules
|
|
|
|
* Lakka focuses on stability rather than bleeding edge
|
|
* We try to maintain all the supported platforms, but we know that 95% of our users are using PC and RPi
|
|
* You are responsible for your own changes, if you break something, you need to fix it
|
|
* Everybody has to test their own changes
|
|
* Testing means manual testing on real hardware
|
|
* If you are unsure how to contribute code, meet us on IRC (#lakkatv on Libera Chat) or Discord (libretro server)
|
|
* Our users want the latest working versions of RetroArch and the libretro cores. They don't want non working / half working versions.
|
|
|
|
# Team members
|
|
|
|
Project leader: natinusala
|
|
|
|
Team members: kivutar, Ntemis, gouchi, ToKe79, RobLoach, natinusala, plaidman
|
|
|
|
# The development branch
|
|
|
|
Current development happens on the branch Lakka-v4.x. This branch follows LibreELEC 10.0 stable.
|
|
|
|
We consider this branch as a rolling release, and we ensure that:
|
|
|
|
* All the projects build fine at least on Ubuntu 20.04
|
|
* All the projects boot
|
|
* All the projects boot to RetroArch
|
|
|
|
We don't have a stable branch + unstable branches. For now, we only work on Lakka-v4.x, which should be as stable as possible.
|
|
|
|
# Pull requests
|
|
|
|
All the code contributions are submitted in the form of Pull Requests. Team members should also use Pull Requests except in case of emergency.
|
|
|
|
A good PR is:
|
|
|
|
* Atomic, changes as less things as possible
|
|
* Well named
|
|
* Well described
|
|
* Tested locally by the sender (on real hardware)
|
|
* Doesn't break other projects (you have to build all of them locally)
|
|
* Idealy doesn't contain merge messages (you can pull --rebase if necessary)
|
|
* Doesn't mix important changes with massive reindentation (send two separate PRs)
|
|
* Doesn't introduce too much changes that would make merging upstream difficult
|
|
|
|
PRs will be reviewed by the core team. The project leader have the final word on merging a PR or not, but all the core team members are invited to do code reviews.
|
|
|
|
PRs should be merged using the *Squash and merge* button only.
|
|
|
|
If a PR is not in a mergeable state, mark the title with [WIP].
|
|
|
|
Commit messages should be formatted like the [LibreELEC](https://github.com/LibreELEC/LibreELEC.tv)'s upstream, in the following format:
|
|
```
|
|
package-name: update something on the package
|
|
```
|
|
|
|
# Merging upstream
|
|
|
|
The upstream branch, LibreELEC 10.0, will be merged on a regular basis by the maintainers. Merging upstream should be discussed and announced on IRC/Discord in presence of the project leader.
|
|
|
|
It should be done once every release cycle, at the beginning of the cycle.
|
|
|
|
# RetroArch updates
|
|
|
|
Updating RetroArch requires a lot of manual testing. So leave this task to the core team.
|
|
|
|
# Release cycle
|
|
|
|
We try to release images to the public one time per month.
|
|
|
|
Before every release or release candidate, we have a one week code freeze that is announced on IRC or Discord by the team leader.
|
|
|
|
During the code freeze:
|
|
|
|
* Everybody tests the images on real hardware
|
|
* We merge only critical fixes
|
|
* We don't merge upstream
|
|
* We don't update RetroArch or cores for no reasons
|
|
* If we update RetroArch or a core, it better be done by adding a build time patch than updating the commit ID
|
|
|
|
# Good practices guide
|
|
|
|
This branch is based on [LibreELEC 10.0](https://github.com/LibreELEC/LibreELEC.tv/tree/libreelec-10.0).
|
|
|
|
After you fork and clone to your local development environment, fetch and switch to branch `Lakka-v4.x` and add the upstream repository:
|
|
|
|
```
|
|
git fetch origin Lakka-v4.x:Lakka-v4.x
|
|
git checkout -b Lakka-v4.x origin/Lakka-v4.x
|
|
git remote add upstream https://github.com/libretro/Lakka-LibreELEC
|
|
git fetch upstream
|
|
git branch --set-upstream-to=upstream/Lakka-v4.x
|
|
```
|
|
|
|
To update your local Lakka-v4.x branch from upstream (do this every time before you create a new branch which you mean to PR):
|
|
```
|
|
git checkout Lakka-v4.x
|
|
git pull upstream Lakka-v4.x
|
|
git push origin Lakka-v4.x
|
|
```
|
|
|
|
Do not commit anything into Lakka-v4.x branch but create branches for each PR, otherwise you will have merge commits when updating from upstream:
|
|
```
|
|
git checkout -b <name_of_branch> Lakka-v4.x
|
|
```
|
|
|
|
To rebase your branch (you might need to resovle some conflicts - do this only when your PR has conflicts with the base):
|
|
```
|
|
git checkout <name_of_branch>
|
|
git rebase upstream Lakka-v4.x
|
|
```
|
|
|
|
## Add LibreELEC repository
|
|
To merge commits from the base, LibreELEC repository has to be added:
|
|
```
|
|
git remote add libreelec https://github.com/LibreELEC/LibreELEC.tv
|
|
```
|
|
|
|
Lakka-v4.x is based on the libreelec-10.0 branch, so fetch it:
|
|
```
|
|
git fetch libreelec libreelec-10.0:libreelec-10.0
|
|
```
|
|
|
|
To update the base branch later:
|
|
```
|
|
git checkout libreelec-10.0
|
|
git pull libreelec libreelec-10.0
|
|
```
|
|
|
|
List of new commits in base branch:
|
|
```
|
|
git log Lakka-v4.x..libreelec-10.0
|
|
```
|
|
|
|
If you want to merge up to a specific commit hash or tag:
|
|
```
|
|
git checkout libreelec-10.0
|
|
git reset --hard <commit|tag>
|
|
```
|
|
|
|
Create new branch and merge the commits:
|
|
```
|
|
git checkout -b update_from_libreelec Lakka-v4.x
|
|
git merge libreelec-10.0
|
|
```
|
|
|
|
Push the changes to your remote repository (and open pull request on GitHub):
|
|
```
|
|
git push origin udpate_from_libreelec
|
|
```
|
|
|