# 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,

manufacturing/          @rohitwaghchaure @marination
accounts/               @deepeshgarg007 @nextchamp-saqib
loan_management/        @deepeshgarg007 @rohitwaghchaure
pos*                    @nextchamp-saqib @rohitwaghchaure
assets/                 @nextchamp-saqib @deepeshgarg007
stock/                  @marination @rohitwaghchaure
buying/                 @marination @deepeshgarg007
hr/                     @Anurag810 @rohitwaghchaure
projects/               @hrwX @nextchamp-saqib
support/                @hrwX @marination
healthcare/             @ruchamahabal @marination
erpnext_integrations/   @Mangesh-Khairnar @nextchamp-saqib
requirements.txt        @gavindsouza
