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

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