You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

204 lines
7.7 KiB

  1. # Contributing
  2. 👍🎉 First off, thanks for taking the time to contribute! 🎉👍
  3. When contributing to this project, please first discuss the changes you wish to make via an issue before making changes.
  4. Please note the [Code of Conduct](CODE_OF_CONDUCT.md) document, please follow it in all your interactions with this project.
  5. ## Your First Code Contribution
  6. Unsure where to begin contributing? You can start by looking through the [`help-wanted`](https://github.com/gitkraken/vscode-gitlens/labels/help-wanted) issues.
  7. ### Getting the code
  8. ```
  9. git clone https://github.com/gitkraken/vscode-gitlens.git
  10. ```
  11. Prerequisites
  12. - [Git](https://git-scm.com/), `>= 2.7.2`
  13. - [NodeJS](https://nodejs.org/), `>= 14.16.0`
  14. - [yarn](https://yarnpkg.com/), `>= 1.22.5`
  15. ### Dependencies
  16. From a terminal, where you have cloned the repository, execute the following command to install the required dependencies:
  17. ```
  18. yarn
  19. ```
  20. ### Build
  21. From a terminal, where you have cloned the repository, execute the following command to re-build the project from scratch:
  22. ```
  23. yarn run rebuild
  24. ```
  25. 👉 **NOTE!** This will run a complete rebuild of the project.
  26. Or to just run a quick build, use:
  27. ```
  28. yarn run build
  29. ```
  30. ### Watch
  31. During development you can use a watcher to make builds on changes quick and easy. From a terminal, where you have cloned the repository, execute the following command:
  32. ```
  33. yarn run watch
  34. ```
  35. Or use the provided `watch` task in VS Code, execute the following from the command palette (be sure there is no `>` at the start):
  36. ```
  37. task watch
  38. ```
  39. This will first do an initial full build and then watch for file changes, compiling those changes incrementally, enabling a fast, iterative coding experience.
  40. 👉 **Tip!** You can press <kbd>CMD+SHIFT+B</kbd> (<kbd>CTRL+SHIFT+B</kbd> on Windows, Linux) to start the watch task.
  41. 👉 **Tip!** You don't need to stop and restart the development version of Code after each change. You can just execute `Reload Window` from the command palette.
  42. ### Formatting
  43. This project uses [prettier](https://prettier.io/) for code formatting. You can run prettier across the code by calling `yarn run pretty` from a terminal.
  44. To format the code as you make changes you can install the [Prettier - Code formatter](https://marketplace.visualstudio.com/items/esbenp.prettier-vscode) extension.
  45. Add the following to your User Settings to run prettier:
  46. ```
  47. "editor.formatOnSave": true,
  48. ```
  49. ### Linting
  50. This project uses [ESLint](https://eslint.org/) for code linting. You can run ESLint across the code by calling `yarn run lint` from a terminal. Warnings from ESLint show up in the `Errors and Warnings` quick box and you can navigate to them from inside VS Code.
  51. To lint the code as you make changes you can install the [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) extension.
  52. ### Bundling
  53. To generate a production bundle (without packaging) run the following from a terminal:
  54. ```
  55. yarn run bundle
  56. ```
  57. To generate a VSIX (installation package) run the following from a terminal:
  58. ```
  59. yarn run package
  60. ```
  61. ### Debugging
  62. #### Using VS Code (desktop)
  63. 1. Open the `vscode-gitlens` folder
  64. 2. Ensure the required [dependencies](#dependencies) are installed
  65. 3. Choose the `Watch & Run` launch configuration from the launch dropdown in the Run and Debug viewlet and press `F5`.
  66. #### Using VS Code (desktop webworker)
  67. 1. Open the `vscode-gitlens` folder
  68. 2. Ensure the required [dependencies](#dependencies) are installed
  69. 3. Choose the `Watch & Run (web)` launch configuration from the launch dropdown in the Run and Debug viewlet and press `F5`.
  70. #### Using VS Code for the Web (locally)
  71. See https://code.visualstudio.com/api/extension-guides/web-extensions#test-your-web-extension-in-a-browser-using-vscodetestweb
  72. 1. Open the `vscode-gitlens` folder
  73. 2. Ensure the required [dependencies](#dependencies) are installed
  74. 3. Run the `build` or `watch` task from the command palette
  75. 4. Run the `Run (local web)` task from the command palette
  76. #### Using VS Code for the Web (vscode.dev)
  77. See https://code.visualstudio.com/api/extension-guides/web-extensions#test-your-web-extension-in-on-vscode.dev
  78. 1. Open the `vscode-gitlens` folder
  79. 2. Ensure the required [dependencies](#dependencies) are installed
  80. 3. Run the `build` or `watch` task from the command palette
  81. 4. Run the `Run (vscode.dev)` task from the command palette
  82. ## Submitting a Pull Request
  83. Please follow all the instructions in the [PR template](.github/PULL_REQUEST_TEMPLATE.md).
  84. ### Contributions to GitLens+ Licensed Files
  85. This repository contains both OSS-licensed and non-OSS-licensed files. All files in or under any directory named "plus" fall under LICENSE.plus. The remaining files fall under LICENSE, the MIT license.
  86. If a pull request is submitted which contains changes to files in or under any directory named "plus", then you agree that GitKraken and/or its licensors (as applicable) retain all right, title and interest in and to all such modifications and/or patches.
  87. ### Update the CHANGELOG
  88. The [Change Log](CHANGELOG.md) is updated manually and an entry should be added for each change. Changes are grouped in lists by `added`, `changed` or `fixed`.
  89. Entries should be written in future tense:
  90. > - Adds [Gravatar](https://en.gravatar.com/) support to gutter and hover blame annotations
  91. Be sure to give yourself much deserved credit by adding your name and user in the entry:
  92. > - Adds `gitlens.statusBar.alignment` settings to control the alignment of the status bar &mdash; thanks to [PR #72](https://github.com/gitkraken/vscode-gitlens/pull/72) by Zack Schuster ([@zackschuster](https://github.com/zackschuster))!
  93. ### Update the README
  94. If this is your first contribution to GitLens, please give yourself credit by adding yourself to the `Contributors` section of the [README](README.md#contributors-) in the following format:
  95. > - `Your Name ([@<your-github-username>](https://github.com/<your-github-username>)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=<your-github-username>)`
  96. ## Publishing
  97. ### Versioning
  98. GitLens version changes are bucketed into two types:
  99. - `minor`: normal release (new features, enhancements and fixes)
  100. - `patch`: hotfix release (just fixes)
  101. <small>Note: `major` version bumps are only considered for more special circumstances.</small>
  102. #### Updating the CHANGELOG
  103. All recent changes are listed under `## [Unreleased]`. This title and corresponding link at the bottom of the page will need to be updated.
  104. The title should be updated to the upcoming version and the release date (YYYY-MM-DD):
  105. ```markdown
  106. <!-- from: -->
  107. ## [Unreleased]
  108. <!-- to: -->
  109. ## [12.1.0] - 2022-06-14
  110. ```
  111. Stage this file so it will be included with the version commit.
  112. #### Version Commit
  113. Run `yarn version` and enter the upcoming version when prompted.
  114. Once the commit is completed, run `git push --follow-tags` to push the version commit and the newly generated tags.
  115. ### GitHub Actions and Deployment
  116. After the version commit and new tags are pushed to GitHub, the [Publish Stable workflow](.github/workflows/cd-stable.yml) will be triggered, which will automatically package the extension and deploy it to the [VS Marketplace](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens). The [release notes](https://github.com/gitkraken/vscode-gitlens/releases/latest) _should_ be generated during the action, but if not, this can be done manually using the notes from the [Change Log](CHANGELOG.md).
  117. If the action fails, the VSIX will need to be built locally with `yarn package` and uploaded manually in the marketplace.
  118. ### Pre-release edition
  119. The [Publish Pre-release workflow](.github/workflows/cd-pre.yml) is automatically run every AM unless no new changes have been committed to `main`.