Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| contributing-to-batocera [2021/11/01 09:18] – better phrasing, reordering of some sections to be more logical atari | contributing-to-batocera [2022/01/30 04:26] (current) – [Making changes in the future] a bit less contradictory phrasing atari | ||
|---|---|---|---|
| Line 11: | Line 11: | ||
| ===== Basics ===== | ===== Basics ===== | ||
| - | Batocera is an open-source software, its source code is hosted at [[https:// | + | Batocera is an open-source software, its source code is hosted at [[https:// |
| - | This article mainly pertains to Linux distributions, | + | This article mainly pertains to Linux distributions, |
| + | |||
| + | <WRAP center round tip> | ||
| + | Github also has a [[: | ||
| + | </ | ||
| ===== Making your first pull request ===== | ===== Making your first pull request ===== | ||
| Line 22: | Line 26: | ||
| - [[# | - [[# | ||
| - [[# | - [[# | ||
| - | - [[# | + | - [[# |
| - Build Batocera and test the modifications, | - Build Batocera and test the modifications, | ||
| - | - [[#push_your_commits_to_the_new_branch|Push your commits to the new branch]] | + | - [[#commit_changes_to_the_local_branch|Push your commits to the new branch]] |
| - | - Make a pull request to batocera.linux containing those commits | + | - [[# |
| - | Initial setup involves a few extra steps, but once setup creating future pull requests are much easier. All you have to do is make sure your local repository is up to date with upstream. | + | Initial setup involves a few extra steps, but once complete, |
| - | + | ||
| - | <WRAP center round tip> | + | |
| - | Github also has a [[https:// | + | |
| - | </ | + | |
| ==== Fork Batocera to your own repository ==== | ==== Fork Batocera to your own repository ==== | ||
| Line 61: | Line 61: | ||
| Other distros generally use more recent versions so this isn't as important. | Other distros generally use more recent versions so this isn't as important. | ||
| + | |||
| + | <WRAP center round tip> | ||
| + | '' | ||
| + | |||
| + | Once installed, run '' | ||
| + | |||
| + | < | ||
| + | What account do you want to login to? Github.com | ||
| + | What is your preferred protocol for Git operation? HTTPS | ||
| + | Authenticate Git with your Github credentials? | ||
| + | How would you like to authenticate Github CLI? Login with a web browser | ||
| + | </ | ||
| + | |||
| + | Then follow its instructions. If a web browser is not available for authentication, | ||
| + | </ | ||
| === Windows === | === Windows === | ||
| Line 67: | Line 82: | ||
| <WRAP center round info> | <WRAP center round info> | ||
| - | You'll note that this program also offers "Git GUI". If you use this, just like with Github Desktop, you're on your own. | + | You'll note that this program also offers "Git GUI". If you use this, you're on your own. |
| </ | </ | ||
| Line 86: | Line 101: | ||
| It is important to distinguish between remote and local repositories. Right now, your account has a remote repository that is a fork (copy) of Batocera.linux. We need to clone (download) this origin remote repository to your local computer to be able to make local edits to it. | It is important to distinguish between remote and local repositories. Right now, your account has a remote repository that is a fork (copy) of Batocera.linux. We need to clone (download) this origin remote repository to your local computer to be able to make local edits to it. | ||
| - | The easiest way is to open a command line, navigate to the directory you would like to save the origin repository to and run '' | + | The easiest way is to open a command line, navigate to the directory you would like to save the origin repository to and run: |
| + | |||
| + | <code bash> | ||
| + | git clone https:// | ||
| + | </ | ||
| Once done (this may take a while, depending on your internet speed), run the following: | Once done (this may take a while, depending on your internet speed), run the following: | ||
| - | * '' | + | |
| - | * '' | + | <code bash> |
| - | * '' | + | cd batocera.linux |
| - | * '' | + | git remote add upstream https:// |
| + | git remote set-url upstream https:// | ||
| + | git remote set-url origin https:// | ||
| + | </ | ||
| + | |||
| + | where '' | ||
| This will config the local repository to be recognized as a fork of upstream (the original remote repository). This makes it easier to stay "in sync" with future changes made to upstream. | This will config the local repository to be recognized as a fork of upstream (the original remote repository). This makes it easier to stay "in sync" with future changes made to upstream. | ||
| + | |||
| + | Submodules (such as buildroot) will become outdated over time. Run the following to set them up to update along with the main repository: | ||
| + | |||
| + | <code bash> | ||
| + | git submodule init | ||
| + | git submodule update | ||
| + | </ | ||
| ==== Create a local branch on your fork ==== | ==== Create a local branch on your fork ==== | ||
| Line 100: | Line 131: | ||
| The '' | The '' | ||
| - | To create a new local branch, run '' | + | To create a new local branch, run '' |
| <WRAP center round info> | <WRAP center round info> | ||
| Line 112: | Line 143: | ||
| ==== Making and testing the modifications ==== | ==== Making and testing the modifications ==== | ||
| - | You have some guidelines | + | You have some guidelines: |
| + | * [[:coding_rules|The coding rules page for adding new scripts]] | ||
| + | * [[: | ||
| + | * [[: | ||
| + | * [[: | ||
| - | ==== Push your commits | + | ==== Commit changes |
| - | Once your changes have been tested and you're ready to make a pull request, merge your commit (changes | + | After creating, testing and finalizing |
| - | Once you've confirmed that you have successfully pushed your changes to your own origin remote, | + | If additional changes need to be made after the fact, run '' |
| + | |||
| + | ==== Create the Pull Request ==== | ||
| + | |||
| + | When all the commits have been committed, merge the commits from your local clone into your fork's repository with the following command (replacing the name of the branch with your own): | ||
| + | |||
| + | <code bash> | ||
| + | git push --set-upstream origin name-of-the-branch | ||
| + | </ | ||
| + | |||
| + | <WRAP center round info> | ||
| + | The first time doing this you will be asked to setup your current Git profile. Enter your Github account' | ||
| + | </ | ||
| + | |||
| + | This will " | ||
| + | |||
| + | Once you've confirmed that you have successfully pushed your changes to your own origin remote, | ||
| + | |||
| + | <WRAP center round tip> | ||
| + | If using Git Bash, a prompt with the appropriate URL will be presented to you once the push is complete. Click that instead to immediately go to the correct page. | ||
| + | </ | ||
| + | |||
| + | ==== Using gh to create Pull Requests ==== | ||
| + | |||
| + | If you opted to install '' | ||
| ===== Making changes in the future ===== | ===== Making changes in the future ===== | ||
| Line 126: | Line 185: | ||
| - '' | - '' | ||
| - '' | - '' | ||
| + | - (Optional) '' | ||
| - | <WRAP center round info> | + | <WRAP center round tip> |
| - | It is not recommended to use ''%%git pull upstream master%%''. [[https:// | + | You can create an alias for these commands by executing the following: |
| + | |||
| + | <code bash> | ||
| + | git config --global alias.update | ||
| + | </code> | ||
| + | |||
| + | This way, running '' | ||
| </ | </ | ||
| Then repeat the steps from the [[# | Then repeat the steps from the [[# | ||
| + | |||
| + | <WRAP center round info> | ||
| + | Performing fetches and merges manually instead of relying on aliases can be quite powerful. [[https:// | ||
| + | </ | ||
| + | |||
| + | <WRAP center round tip> | ||
| + | As you create new changes and successfully complete PRs, branches can start piling up on your cloned fork. | ||
| + | |||
| + | You can remove old branches from your cloned repository by first switching to the appropriate branch ('' | ||
| + | </ | ||
| + | |||
| + | ===== Tips ===== | ||
| + | |||
| + | ==== Check all the current differences ==== | ||
| + | |||
| + | This will just show the differences in the files between now and the last commit. This is not a reflection of all the differences between the branch and the master branch. | ||
| + | |||
| + | <code bash> | ||
| + | git diff | ||
| + | </ | ||
| + | |||
| + | ==== Discard all changes ==== | ||
| + | |||
| + | This restores files back from the last commit. First, ensure you are on the branch you intend to undo the changes on, and run the following: | ||
| + | |||
| + | <code bash> | ||
| + | git restore . | ||
| + | </ | ||
| + | |||
| + | Individual files can also be specified by replacing '' | ||
| + | |||
| + | ===== Troubleshooting ===== | ||
| + | |||
| + | ==== There are changes to the buildroot submodule that I didn't make! ==== | ||
| + | |||
| + | That's why you updated the submodules earlier. But this can also happen if you say download a branch from the remote that hasn't had the submodules updated yet. To update the submodules again run the following: | ||
| + | |||
| + | <code bash> | ||
| + | git submodule update | ||
| + | </ | ||
- contributing-to-batocera.1635758284.txt.gz
- Last modified: 5 years ago
- by atari