Skip to content

Latest commit

 

History

History
221 lines (152 loc) · 7.61 KB

CONTRIBUTING.md

File metadata and controls

221 lines (152 loc) · 7.61 KB

Contributing to SFDX-Git-Delta

We encourage the developer community to contribute to this repository. This guide has instructions to install, build, test and contribute to the framework.

Requirements

Installation

1) Download the repository

git clone [email protected]:scolladon/sfdx-git-delta.git

2) Install Dependencies

This will install all the tools needed to contribute

yarn

2) Build application

yarn pack

Rebuild every time you made a change in the source and you need to test locally

Testing

Unit Testing sgd

When developing, use jest unit testing to provide test coverage for new functionality. To run the jest tests use the following command from the root directory:

# just run test
yarn test

# run test with coverage details
yarn test:coverage

To execute a particular test, use the following command:

yarn test -- <path_to_test>

Editor Configurations

Configure your editor to use our lint and code style rules.

Code formatting

Prettier is a code formatter used to ensure consistent formatting across your code base. To use Prettier with Visual Studio Code, install this extension from the Visual Studio Code Marketplace. This repository provide .prettierignore and .prettierrc files to control the behaviour of the Prettier formatter.

Code linting

ESLint is a popular JavaScript linting tool used to identify stylistic errors and erroneous constructs. This repository provide .eslintignore file to exclude specific files from the linting process.

Commit linting

This repository uses Commitlint to check our commit convention. We follow the angular commit convention. Pre-commit git hook using husky and pull request check both the commit convention for each commit in a branch.

You can use an interactive command line to help you create supported commit message

yarn commit

PR linting

When a PR is ready for merge we use the PR name to create the squash and merge commit message. We use the commit convention to auto-generate the content and the type of each release It needs to follow our commit lint convention and it will be check at the PR level

Git Workflow

The process of submitting a pull request is straightforward and generally follows the same pattern each time:

  1. Fork the sfdx-git-delta repo
  2. Create a feature branch
  3. Make your changes
  4. Rebase
  5. Check your submission
  6. Create a pull request
  7. Update the pull request

Fork the sfdx-git-delta repo

Fork the scolladon/sfdx-git-delta repo. Clone your fork in your local workspace and configure your remote repository settings.

git clone [email protected]:<YOUR-USERNAME>/sfdx-git-delta.git
cd sfdx-git-delta
git remote add upstream [email protected]:scolladon/sfdx-git-delta.git

Create a feature branch

git checkout main
git pull origin main
git checkout -b feature/<name-of-the-feature>

Make your changes

Change the files, build, test, lint and commit your code using the following command:

git add <path/to/file/to/commit>
git commit ...
git push origin feature/<name-of-the-feature>

Commit your changes using a descriptive commit message

The above commands will commit the files into your feature branch. You can keep pushing new changes into the same branch until you are ready to create a pull request.

Rebase

Sometimes your feature branch will get stale on the main branch, and it will must a rebase. Do not use the github UI rebase to keep your commits signed. The following steps can help:

git checkout main
git pull upstream main
git checkout feature/<name-of-the-feature>
git rebase upstream/main

note: If no conflicts arise, these commands will apply your changes on top of the main branch. Resolve any conflicts.

Check your submission

Lint your changes

yarn lint

The above command may display lint issues not related to your changes. The recommended way to avoid lint issues is to configure your editor to warn you in real time as you edit the file.

Fixing all existing lint issues is a tedious task so please pitch in by fixing the ones related to the files you make changes to!

Run tests

Test your change by running the unit tests and integration tests. Instructions here.

Create a pull request

If you've never created a pull request before, follow these instructions. Pull request samples here

Update the pull request

git fetch origin
git rebase origin/${base_branch}

# Then force push it
git push origin ${feature_branch} --force-with-lease

note: If your pull request needs more changes, keep working on your feature branch as described above.

CI validates prettifying, linting and tests

Collaborate on the pull request

We use Conventional Comments to ensure every comment expresses the intention and is easy to understand. Pull Request comments are not enforced, it is more a way to help the reviewers and contributors to collaborate on the pull request.

Update Salesforce API version

The repo contains a script to increment the Salesforce API version supported by SGD. To upgrade the API version, run the following command:

yarn && yarn increment:apiversion

CLI parameters convention

The CLI uses Apache Commons CLI parameters convention to define parameters for the CLI. When long parameter is one word then take the first character to define the short parameter. Ex: --word -w When long parameter is many words then take the first character of the last word to define the short parameter. Ex: --long-phrase -p When the short parameter is already taken then put the short parameter uppercase. Ex: --with -W, --long-paragraph -P When the character you should take for the short parameter is already taken then choose another character. Explain your choice in the PR description and let's discuss it!

Testing the plugin from a pull request

To test SGD as a Salesforce CLI plugin from a pending pull request:

  1. uninstall the previous version you may have sfdx plugins:uninstall sfdx-git-delta
  2. clone the repository
  3. checkout the branch to test
  4. install the dependencies yarn install
  5. run yarn pack, followed by sfdx plugins:link, from that local repository
  6. test the plugin!