open-webui/CONTRIBUTING.md
2025-02-03 16:45:25 +00:00

197 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Contributing Guide
## Development Guidelines
### Code Quality Tools
1. Pre-commit setup:
```bash
pre-commit install
```
2. Configured hooks:
- YAML checking
- End-of-file fixer
- Trailing whitespace removal
- Ruff (linting + formatting)
- MyPy (type checking)
### Coding Standards
- Follow PEP 8 guidelines.
- Use type hints consistently.
- Maximum line length: 130 characters.
- Use single quotes for strings.
### Commit Guidelines
Use Commitizen for standardized commits:
```bash
git cz
```
## Git Strategy: Feature branch
The **Git Feature Branch Workflow** is a way to work on new features in a project without messing up the main code. Instead of working directly on the `main` branch (the "official" code), you create a separate branch for each feature. This keeps the `main` branch clean and stable.
---
## How It Works (Diagram)
**Example:**
```bash
git branch -d add-login-button
git push origin --delete add-login-button
```
**Example Workflow (Diagram)**
Heres an example of how Mary uses this workflow:
```mermaid
sequenceDiagram
participant Mary
participant GitHub
participant Bill
Mary->>GitHub: Create a new branch (add-login-button)
Mary->>Mary: Make changes and commit
Mary->>GitHub: Push branch to remote
Mary->>GitHub: Open a pull request
Bill->>GitHub: Review pull request
Bill->>Mary: Request changes
Mary->>Mary: Fix feedback and commit
Mary->>GitHub: Push updates
Bill->>GitHub: Approve pull request
Mary->>GitHub: Merge branch into main
Mary->>GitHub: Delete feature branch
```
---
## General Step-by-Step Instructions
### 1. Start with the main branch
Make sure your local main branch is up-to-date with the latest code from the central repository.
```bash
git checkout main
git fetch origin
git reset --hard origin/main
```
### 2. Create a new branch for your feature
Create a branch for your feature. Use a clear name that describes what youre working on, like `add-login-button` or `fix-bug-123`.
```bash
git checkout -b your-branch-name
```
**Example:**
```bash
git checkout -b add-login-button
```
### 3. Work on your feature
Make changes to the code. After making changes, save your work by following these steps:
- Check what files youve changed:
```bash
git status
```
- Add the files you want to save:
```bash
git add <file-name>
```
**Example:**
```bash
git add index.html
```
- Save your changes with a message:
```bash
git commit -m "Describe what you changed"
```
**Example:**
```bash
git commit -m "Added login button to homepage"
```
### 4. Push your branch to the remote repository
To back up your work and share it with others, push your branch to the central repository.
```bash
git push -u origin your-branch-name
```
**Example:**
```bash
git push -u origin add-login-button
```
### 5. Open a pull request
Go to your Git hosting platform (like GitLab) and open a pull request. This is how you ask your team to review your changes and approve them before adding them to the main branch.
### 6. Fix feedback from reviewers
If your teammates suggest changes, follow these steps to update your branch:
- Make the changes locally.
- Save the changes:
```bash
git add <file-name>
git commit -m "Fixed feedback"
git push
```
### 7. Merge your branch into main
Once your pull request is approved, its time to merge your branch into the main branch.
- Switch to the main branch:
```bash
git checkout main
```
- Update your local main branch:
```bash
git pull
```
- Merge your feature branch into main:
```bash
git merge your-branch-name
```
- Push the updated main branch to the remote repository:
```bash
git push
```
### 8. Delete your feature branch
After merging, delete your feature branch to keep things clean.
- Delete the branch locally:
```bash
git branch -d your-branch-name
```
- Delete the branch from the remote repository:
```bash
git push origin --delete your-branch-name
```
## Summary
- Create a branch for each feature.
- Work on your branch without touching `main`.
- Push your branch to back up your work.
- Open a pull request to get feedback and approval.
- Merge your branch into `main` when its ready.
- Delete your branch after merging.
By following these steps, youll keep the `main` branch clean and make it easy for your team to collaborate.