# Each line is a file pattern followed by one or more owners.

# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence,

erpnext/accounts/               @nextchamp-saqib @deepeshgarg007
erpnext/assets/                 @nextchamp-saqib @deepeshgarg007
erpnext/erpnext_integrations/   @nextchamp-saqib
erpnext/loan_management/        @nextchamp-saqib @deepeshgarg007
erpnext/regional                @nextchamp-saqib @deepeshgarg007
erpnext/selling                 @nextchamp-saqib @deepeshgarg007
erpnext/support/                @nextchamp-saqib @deepeshgarg007
pos*                            @nextchamp-saqib

erpnext/buying/                 @marination @rohitwaghchaure @ankush
erpnext/e_commerce/             @marination
erpnext/maintenance/            @marination @rohitwaghchaure
erpnext/manufacturing/          @marination @rohitwaghchaure @ankush
erpnext/portal/                 @marination
erpnext/quality_management/     @marination @rohitwaghchaure
erpnext/shopping_cart/          @marination
erpnext/stock/                  @marination @rohitwaghchaure @ankush

erpnext/crm/                    @ruchamahabal @pateljannat
erpnext/education/              @ruchamahabal
erpnext/healthcare/             @ruchamahabal @pateljannat @chillaranand
erpnext/hr/                     @ruchamahabal @pateljannat
erpnext/non_profit/             @ruchamahabal
erpnext/payroll                 @ruchamahabal @pateljannat
erpnext/projects/               @ruchamahabal @pateljannat

erpnext/controllers             @deepeshgarg007 @nextchamp-saqib @rohitwaghchaure @marination

.github/                        @surajshetty3416 @ankush
requirements.txt                @gavindsouza
