mirror of
https://github.com/frappe/erpnext.git
synced 2025-12-03 18:35:36 +00:00
Page:
Cascading Pull Requests
Pages
"Expense or Difference account is mandatory for [YOUR ITEM HERE] as it impacts overall stock value"
Adding Custom Form to Website
Agri Farm ERPNext
Agri Farm ERPNext Documentation
Agri Farm ERPNext Proposed Doc
Agri farm ERPNext PR git primer
AgriNext Mockups
Apache HTTP Settings for Mac OS
Bank Transaction Management : Feature Specification (v0.1)
Cascading Pull Requests
Code Editing Tools
Code Security Guidelines
Coding Standards
Community Contributions
Community Developed Custom Scripts
Community Release Manager
Contribution Guidelines
Contribution Issues
Country wise Chart of Accounts
Create User Stories
Delivery Note Modern Legacy Print Format
Delivery Note Spartan Legacy Print Format
Designing Integrations
Documentation To Do
E Commerce Features List
ERPNext Performance Tuning
ERPNext Release Note v8.1
ERPNext Upgrade to Version 5
ERPNext Version 8
ERPNext for Import Export Business( Logistics Module)
ERPNext for Non Profits
Export Custom field using export fixtures
Feature Suggestions
Form Design Guidelines
Future Development: Tracking Productivity
Guide to splitting modules from ERPNext
Home
How To Make Regional Contributions
How to Install ERPNext Version 3
How to contribute ERPNext documentation[WIP]
How to test a Pull Request
Hub Code Sprint
Improve Precision of Stock Valuation
Install ERPNext on Debian based systems
Install ERPNext on RedHat based systems
Integrating Emails in ERPNext
Issue Guidelines
Legacy Print Formats (Category)
Manufacturing Module Community
Migrating your erpnext instance to wsgi
Migration Guide To ERPNext Version 16
Migration Guide to ERPNext version 14
Migration Guide to ERPNext version 15
Model Design Guidelines
Module Maintainers
MySQL configuration file
Naming Guidelines
Page format for ERPNext docs
Preparing a Contribution Proposal
Project Module Community
Pull Request Checklist
Purchase Order Classic Legacy Print Format
Purchase Order Modern Legacy Print Format
Purchase Order Spartan Legacy Print Format
Quotation Classic Legacy Print Format
Quotation Modern Legacy Print Format
Quotation Spartan Legacy Print Format
Restoring From ERPNext Backup
Sales Invoice Classic Legacy Print Format
Sales Invoice Modern Legacy Print Format
Sales Invoice Spartan Legacy Print Format
Sales Order Classic Legacy Print Format
Sales Order Modern Legacy Print Format
Setting up Backup Manager
Setting up TLS SSL certificates Let's Encrypt for ERPNext sites
Some Useful Aliases
Standard Print Header Code
Standard Release Test Plan
Standard With Columns Print Format
Supported Versions
Test Checklists
Troubleshooting Guide Template
Ubuntu HA Cluster with lsyncd, remote MariaDB, Apache Reverse Proxy Setup Guide
Updating ERPNext Instance
VSCode Debugging for Frappe Python
Version 4 Permission Use Cases
Version 5 Release Notes
Version 7 Release Notes
Version 7.1 Release Notes
WSGI Production Deployment
[Specifications] Hash chaining of sales and payment transactions in ERPNext
_sidebar
school
Clone
4
Cascading Pull Requests
Prateeksha Singh edited this page 2018-06-19 11:52:02 +05:30
Cascading Pull Requests (CPR) is a strategy to break down a big features in smaller mergeable parts. Smaller parts are easier to merge, review and have fewer bugs.
The goal is to keep un-shipped code to the minimum.
This document explains how to build a feature in a mergeable way using CPRs
Planning
These are strategies to help you plan how to implement a feature
- Make a mockup and get it approved, specially for larger features. This will make sure that the naming and labeling is correct. Fixing a column name or table / DocType name at a later point is going to be very difficult.
- Break down the feature into smaller phases so that each phase is complete on its own.
- Start from the data structures and move up to the user interface elements.
Execution
- Build the smallest possible feature that can be merged and is working
- Keep the feature hidden from the user until it is complete
- Create a new branch as soon as a phase is completed, so you can continue working even when your earlier phases are not merged.
- As soon as your phases get merged, rebase with
develop.
Caveats
- Of course, a gotcha is that almost always, the PRs are not mutually exclusive. This means that the contributor has to take care to keep rebasing his development branch to reflect the changes of his previously merged PR (and any other changes in the meantime).
- As a result, this approach works better if the individual PRs are merged at a reasonable pace.
- It also helps if the individual steps are defined beforehand, for the maintainers to understand the effects that may not clear in the early stages.
- It should be noted that this does not imply that you'd have to create a new branch for every PR. Cascading suggests separation of PRs, not necessarily branches. You can continue developing and push all your commits to the same feature branch and create PRs along the way. Simply rebase the branch as your previous PRs get merged.
Example
If you are working on implementing Global Search, here are suggested phases
- Create Index Table
- Build Index table for existing data
- Update Index table for new inserts and updates
- Refactor search bar
- Show global search results in the new search bar
- Make a modal to show all results in a classified way.