# The admingolangorg program needs a fairly short list of things
# from the golang.org/x/website repository that probably doesn't
# change often. Filter everything else out implicitly as long as
# this approach needs less maintenance.
**
!go.mod
!go.sum
!cmd/
!cmd/admingolangorg/**
!internal/
!internal/short/**
!internal/memcache/**
!internal/backport/**

.gcloudignore
