# 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 @ruthra-kumar
erpnext/assets/                 @nextchamp-saqib @deepeshgarg007 @ruthra-kumar
erpnext/loan_management/        @nextchamp-saqib @deepeshgarg007
erpnext/regional                @nextchamp-saqib @deepeshgarg007 @ruthra-kumar
erpnext/selling                 @nextchamp-saqib @deepeshgarg007 @ruthra-kumar
erpnext/support/                @nextchamp-saqib @deepeshgarg007
pos*                            @nextchamp-saqib

erpnext/buying/                 @rohitwaghchaure @s-aga-r
erpnext/maintenance/            @rohitwaghchaure @s-aga-r
erpnext/manufacturing/          @rohitwaghchaure @s-aga-r
erpnext/quality_management/     @rohitwaghchaure @s-aga-r
erpnext/stock/                  @rohitwaghchaure @s-aga-r

erpnext/crm/                    @NagariaHussain
erpnext/education/              @rutwikhdev
erpnext/projects/               @ruchamahabal

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

.github/                        @ankush
pyproject.toml                  @ankush
