diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..1be11e8ec725d98434a09496afe88626b7baf131
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,19 @@
+# Global excludes across all subdirectories
+*.o
+*.so
+*.so.[0-9]
+*.so.[0-9].[0-9]
+*.sl
+*.sl.[0-9]
+*.sl.[0-9].[0-9]
+*.dylib
+*.dll
+*.a
+*.mo
+objfiles.txt
+.deps/
+
+# Local excludes in root directory
+/GNUmakefile
+/config.log
+/config.status
diff --git a/contrib/adminpack/.gitignore b/contrib/adminpack/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..ea9a442f3a157824d42584679b3d22b051609b4a
--- /dev/null
+++ b/contrib/adminpack/.gitignore
@@ -0,0 +1 @@
+/adminpack.sql
diff --git a/contrib/btree_gin/.gitignore b/contrib/btree_gin/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..c3ce67c1407ecab5b6a0b633d1289fc9973a3e6c
--- /dev/null
+++ b/contrib/btree_gin/.gitignore
@@ -0,0 +1 @@
+/btree_gin.sql
diff --git a/contrib/btree_gist/.gitignore b/contrib/btree_gist/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..95b6332299e824f0e013c20c9f3d2af353f14043
--- /dev/null
+++ b/contrib/btree_gist/.gitignore
@@ -0,0 +1 @@
+/btree_gist.sql
diff --git a/contrib/chkpass/.gitignore b/contrib/chkpass/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..9029d666aa5eec07728e37763539a85451894836
--- /dev/null
+++ b/contrib/chkpass/.gitignore
@@ -0,0 +1 @@
+/chkpass.sql
diff --git a/contrib/citext/.gitignore b/contrib/citext/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..3f449cfc46e4cf5e128a50428a3e7a27d7433d3d
--- /dev/null
+++ b/contrib/citext/.gitignore
@@ -0,0 +1 @@
+/citext.sql
diff --git a/contrib/cube/.cvsignore b/contrib/cube/.cvsignore
deleted file mode 100644
index 19ecc85b586bf6ecd330367429850552bb410946..0000000000000000000000000000000000000000
--- a/contrib/cube/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-cubeparse.c
-cubescan.c
diff --git a/contrib/cube/.gitignore b/contrib/cube/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..bb28b9327c10859afb0cd00e8768d36fd5f5e860
--- /dev/null
+++ b/contrib/cube/.gitignore
@@ -0,0 +1,3 @@
+/cubeparse.c
+/cubescan.c
+/cube.sql
diff --git a/contrib/dblink/.gitignore b/contrib/dblink/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..985b73d394973221f61a8aaa2f4fd2ed3a49cc51
--- /dev/null
+++ b/contrib/dblink/.gitignore
@@ -0,0 +1 @@
+/dblink.sql
diff --git a/contrib/dict_int/.gitignore b/contrib/dict_int/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..90a29e83fa2f4871fbc35364b1535c517b9c8735
--- /dev/null
+++ b/contrib/dict_int/.gitignore
@@ -0,0 +1 @@
+/dict_int.sql
diff --git a/contrib/dict_xsyn/.gitignore b/contrib/dict_xsyn/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4f1dc1e8b3961684bd46311deecf8b817880db65
--- /dev/null
+++ b/contrib/dict_xsyn/.gitignore
@@ -0,0 +1 @@
+/dict_xsyn.sql
diff --git a/contrib/earthdistance/.gitignore b/contrib/earthdistance/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..86caae7daa9d2e233a74d467dc037d93c75a3d65
--- /dev/null
+++ b/contrib/earthdistance/.gitignore
@@ -0,0 +1 @@
+/earthdistance.sql
diff --git a/contrib/fuzzystrmatch/.gitignore b/contrib/fuzzystrmatch/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..f4962c630bac00ba36929c1cc9a9809a4083b24d
--- /dev/null
+++ b/contrib/fuzzystrmatch/.gitignore
@@ -0,0 +1 @@
+/fuzzystrmatch.sql
diff --git a/contrib/hstore/.gitignore b/contrib/hstore/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..737d3655c6436670e321b9bd41cb6b8e8d35b0ce
--- /dev/null
+++ b/contrib/hstore/.gitignore
@@ -0,0 +1 @@
+/hstore.sql
diff --git a/contrib/intarray/.gitignore b/contrib/intarray/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e9985910a353d798cb651e8cf36c40e06be4a596
--- /dev/null
+++ b/contrib/intarray/.gitignore
@@ -0,0 +1 @@
+/_int.sql
diff --git a/contrib/isn/.gitignore b/contrib/isn/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..1df12e3b7534738470bd30e430c4f610f9732728
--- /dev/null
+++ b/contrib/isn/.gitignore
@@ -0,0 +1 @@
+/isn.sql
diff --git a/contrib/lo/.gitignore b/contrib/lo/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..979347bd008b7a05d65e910b1144f1311517b38b
--- /dev/null
+++ b/contrib/lo/.gitignore
@@ -0,0 +1 @@
+/lo.sql
diff --git a/contrib/ltree/.gitignore b/contrib/ltree/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..85d1e298b48b77c274d40013f7308b9df0ca2414
--- /dev/null
+++ b/contrib/ltree/.gitignore
@@ -0,0 +1 @@
+/ltree.sql
diff --git a/contrib/oid2name/.gitignore b/contrib/oid2name/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..fdefde108ddd1511897045e4cc894cb62763384a
--- /dev/null
+++ b/contrib/oid2name/.gitignore
@@ -0,0 +1 @@
+/oid2name
diff --git a/contrib/pageinspect/.gitignore b/contrib/pageinspect/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..fad166aaee8747d8c4fa2dd17555b14851a0b98c
--- /dev/null
+++ b/contrib/pageinspect/.gitignore
@@ -0,0 +1 @@
+/pageinspect.sql
diff --git a/contrib/pg_archivecleanup/.gitignore b/contrib/pg_archivecleanup/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..804089070d5645591f7cdc91e2d9aa814e81c12d
--- /dev/null
+++ b/contrib/pg_archivecleanup/.gitignore
@@ -0,0 +1 @@
+/pg_archivecleanup
diff --git a/contrib/pg_buffercache/.gitignore b/contrib/pg_buffercache/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..fea8b0b3d40b27e0eec2392d2f347a3609ca6348
--- /dev/null
+++ b/contrib/pg_buffercache/.gitignore
@@ -0,0 +1 @@
+/pg_buffercache.sql
diff --git a/contrib/pg_freespacemap/.gitignore b/contrib/pg_freespacemap/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..645433a39fa29c7760820062f2e88b7300e885e1
--- /dev/null
+++ b/contrib/pg_freespacemap/.gitignore
@@ -0,0 +1 @@
+/pg_freespacemap.sql
diff --git a/contrib/pg_standby/.gitignore b/contrib/pg_standby/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..a401b085a895df81abb342f29b8ebc71ed9692c6
--- /dev/null
+++ b/contrib/pg_standby/.gitignore
@@ -0,0 +1 @@
+/pg_standby
diff --git a/contrib/pg_stat_statements/.gitignore b/contrib/pg_stat_statements/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..2ca3f068d0c284ec231b58bf98743cb00ee58924
--- /dev/null
+++ b/contrib/pg_stat_statements/.gitignore
@@ -0,0 +1 @@
+/pg_stat_statements.sql
diff --git a/contrib/pg_trgm/.gitignore b/contrib/pg_trgm/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..3272f08f53b67e5ab5f3ca0ca392bb3fa5e857bf
--- /dev/null
+++ b/contrib/pg_trgm/.gitignore
@@ -0,0 +1 @@
+/pg_trgm.sql
diff --git a/contrib/pg_upgrade/.gitignore b/contrib/pg_upgrade/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..03ec737bf2b993d040a6971b5ddae0bb506f81a6
--- /dev/null
+++ b/contrib/pg_upgrade/.gitignore
@@ -0,0 +1 @@
+/pg_upgrade
diff --git a/contrib/pgbench/.gitignore b/contrib/pgbench/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..489a2d62d0685e2ba31ccf2be7ff3d277d87350a
--- /dev/null
+++ b/contrib/pgbench/.gitignore
@@ -0,0 +1 @@
+/pgbench
diff --git a/contrib/pgcrypto/.gitignore b/contrib/pgcrypto/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..3cdb7a6396e8062d6074e24119d2f053a64e862b
--- /dev/null
+++ b/contrib/pgcrypto/.gitignore
@@ -0,0 +1 @@
+/pgcrypto.sql
diff --git a/contrib/pgrowlocks/.gitignore b/contrib/pgrowlocks/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..b2729282bf058fdac2ae734690cc81855454a57e
--- /dev/null
+++ b/contrib/pgrowlocks/.gitignore
@@ -0,0 +1 @@
+/pgrowlocks.sql
diff --git a/contrib/pgstattuple/.gitignore b/contrib/pgstattuple/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..69b22b64cd92e80aed3c334d9ccc807e192e06f9
--- /dev/null
+++ b/contrib/pgstattuple/.gitignore
@@ -0,0 +1 @@
+/pgstattuple.sql
diff --git a/contrib/seg/.cvsignore b/contrib/seg/.cvsignore
deleted file mode 100644
index aa740d3474e6a785c54e631c30499f202f2c9ffe..0000000000000000000000000000000000000000
--- a/contrib/seg/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-segparse.c
-segscan.c
diff --git a/contrib/seg/.gitignore b/contrib/seg/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..d2a71ec0dd395209ce0a1932cb8ff0257fefcedd
--- /dev/null
+++ b/contrib/seg/.gitignore
@@ -0,0 +1,3 @@
+/segparse.c
+/segscan.c
+/seg.sql
diff --git a/contrib/spi/.gitignore b/contrib/spi/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..6c07a33b11426c253e8eb0a0ba33ebf981822907
--- /dev/null
+++ b/contrib/spi/.gitignore
@@ -0,0 +1,5 @@
+/autoinc.sql
+/insert_username.sql
+/moddatetime.sql
+/refint.sql
+/timetravel.sql
diff --git a/contrib/sslinfo/.gitignore b/contrib/sslinfo/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..6ed45c8ce5a1ea0b1e60147d81b3f83d9c23bd85
--- /dev/null
+++ b/contrib/sslinfo/.gitignore
@@ -0,0 +1 @@
+/sslinfo.sql
diff --git a/contrib/tablefunc/.gitignore b/contrib/tablefunc/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..3477af4d4b88bfc0601355c59c27165e67980c03
--- /dev/null
+++ b/contrib/tablefunc/.gitignore
@@ -0,0 +1 @@
+/tablefunc.sql
diff --git a/contrib/test_parser/.gitignore b/contrib/test_parser/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..54cb045adb801d87a0de2dc1f8616b6c3c941443
--- /dev/null
+++ b/contrib/test_parser/.gitignore
@@ -0,0 +1 @@
+/test_parser.sql
diff --git a/contrib/tsearch2/.gitignore b/contrib/tsearch2/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..b5da0e9f7d129cf9764140557a29308456b1484d
--- /dev/null
+++ b/contrib/tsearch2/.gitignore
@@ -0,0 +1 @@
+/tsearch2.sql
diff --git a/contrib/unaccent/.gitignore b/contrib/unaccent/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..30a87490489589460319ed1d2f7a1b113590e209
--- /dev/null
+++ b/contrib/unaccent/.gitignore
@@ -0,0 +1 @@
+/unaccent.sql
diff --git a/contrib/vacuumlo/.gitignore b/contrib/vacuumlo/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..07f6ab4fd7c9d3483d245f97d3ebaae08d2a3db7
--- /dev/null
+++ b/contrib/vacuumlo/.gitignore
@@ -0,0 +1 @@
+/vacuumlo
diff --git a/doc/src/sgml/.cvsignore b/doc/src/sgml/.cvsignore
deleted file mode 100644
index ed986e3a76fe7150da4156021f3af557e87ddf5d..0000000000000000000000000000000000000000
--- a/doc/src/sgml/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-html
-html-stamp
-man1
-man3
-man7
-man-stamp
diff --git a/doc/src/sgml/.gitignore b/doc/src/sgml/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..0930205befd19456ca301e35829bb48c65c4901b
--- /dev/null
+++ b/doc/src/sgml/.gitignore
@@ -0,0 +1,10 @@
+/html
+/html-stamp
+/man1
+/man3
+/man7
+/man-stamp
+
+/features-supported.sgml
+/features-unsupported.sgml
+/version.sgml
diff --git a/src/.gitignore b/src/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..a66aac007a43ca1c32f7ea1757048e9992adb509
--- /dev/null
+++ b/src/.gitignore
@@ -0,0 +1,3 @@
+/Makefile.global
+/Makefile.port
+/Makefile.custom
diff --git a/src/backend/.gitignore b/src/backend/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..566eb10a5adb0044036ce015cfef01fc85391b55
--- /dev/null
+++ b/src/backend/.gitignore
@@ -0,0 +1 @@
+/postgres
diff --git a/src/backend/bootstrap/.cvsignore b/src/backend/bootstrap/.cvsignore
deleted file mode 100644
index 5201be98868a5a283132e6738ab1c790b063a348..0000000000000000000000000000000000000000
--- a/src/backend/bootstrap/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-bootparse.c
-bootscanner.c
diff --git a/src/backend/bootstrap/.gitignore b/src/backend/bootstrap/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..1ffe8ca39edfd6b10200577f89fa12bc001d1f99
--- /dev/null
+++ b/src/backend/bootstrap/.gitignore
@@ -0,0 +1,2 @@
+/bootparse.c
+/bootscanner.c
diff --git a/src/backend/catalog/.cvsignore b/src/backend/catalog/.cvsignore
deleted file mode 100644
index 242e32155fbd291369ffe4b70c01883d89dddde4..0000000000000000000000000000000000000000
--- a/src/backend/catalog/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-postgres.bki
-postgres.description
-postgres.shdescription
-schemapg.h
diff --git a/src/backend/catalog/.gitignore b/src/backend/catalog/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..557af3c0e5e4fedda7bf7f258c165cd9f3e26a0a
--- /dev/null
+++ b/src/backend/catalog/.gitignore
@@ -0,0 +1,4 @@
+/postgres.bki
+/postgres.description
+/postgres.shdescription
+/schemapg.h
diff --git a/src/backend/parser/.cvsignore b/src/backend/parser/.cvsignore
deleted file mode 100644
index 6545728c5c55ce8ea688e3ba552df7a15375afc9..0000000000000000000000000000000000000000
--- a/src/backend/parser/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-gram.h
-gram.c
-scan.c
diff --git a/src/backend/parser/.gitignore b/src/backend/parser/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..16ac68d257b11f8c4a2c63a4ff83971b04eb6d4a
--- /dev/null
+++ b/src/backend/parser/.gitignore
@@ -0,0 +1,3 @@
+/gram.h
+/gram.c
+/scan.c
diff --git a/src/backend/port/.gitignore b/src/backend/port/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..7d3ac4ab427e71c938e3a0df2f602d470540b334
--- /dev/null
+++ b/src/backend/port/.gitignore
@@ -0,0 +1,5 @@
+/dynloader.c
+/pg_latch.c
+/pg_sema.c
+/pg_shmem.c
+/tas.s
diff --git a/src/backend/snowball/.gitignore b/src/backend/snowball/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..ef03eb62a7bd59ea4eaff11ab48351947853ae9f
--- /dev/null
+++ b/src/backend/snowball/.gitignore
@@ -0,0 +1 @@
+/snowball_create.sql
diff --git a/src/backend/utils/.cvsignore b/src/backend/utils/.cvsignore
deleted file mode 100644
index a2ff9bbc53f8d7d5f4b196de2a084e599a0ba55f..0000000000000000000000000000000000000000
--- a/src/backend/utils/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-fmgrtab.c
-fmgroids.h
diff --git a/src/backend/utils/.gitignore b/src/backend/utils/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..fd00851e4a706ac60ceb4f11a01416a50c26f396
--- /dev/null
+++ b/src/backend/utils/.gitignore
@@ -0,0 +1,3 @@
+/fmgrtab.c
+/fmgroids.h
+/probes.h
diff --git a/src/backend/utils/mb/conversion_procs/.gitignore b/src/backend/utils/mb/conversion_procs/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..3e30742a15639e1f92fa34dd199ed2d1d17ab0a7
--- /dev/null
+++ b/src/backend/utils/mb/conversion_procs/.gitignore
@@ -0,0 +1 @@
+/conversion_create.sql
diff --git a/src/backend/utils/misc/.cvsignore b/src/backend/utils/misc/.cvsignore
deleted file mode 100644
index b188561286e8f8f8f5a8743c8aeaf89df9bc3416..0000000000000000000000000000000000000000
--- a/src/backend/utils/misc/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-guc-file.c
diff --git a/src/backend/utils/misc/.gitignore b/src/backend/utils/misc/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..495b1aec76b81798d18969dc3cd2f7a20fb796ce
--- /dev/null
+++ b/src/backend/utils/misc/.gitignore
@@ -0,0 +1 @@
+/guc-file.c
diff --git a/src/bin/initdb/.gitignore b/src/bin/initdb/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..843eaf0c1e202e4bbdb272f8fa39f515d65b7451
--- /dev/null
+++ b/src/bin/initdb/.gitignore
@@ -0,0 +1,4 @@
+/encnames.c
+/pqsignal.c
+
+/initdb
diff --git a/src/bin/pg_config/.gitignore b/src/bin/pg_config/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..169bc766de4209d3b6c20ed7474692462e1ad4ed
--- /dev/null
+++ b/src/bin/pg_config/.gitignore
@@ -0,0 +1 @@
+/pg_config
diff --git a/src/bin/pg_controldata/.gitignore b/src/bin/pg_controldata/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..32ea40181f5b404b2d48dd4a52c19026b5d8ccac
--- /dev/null
+++ b/src/bin/pg_controldata/.gitignore
@@ -0,0 +1,3 @@
+/pg_crc.c
+
+/pg_controldata
diff --git a/src/bin/pg_ctl/.gitignore b/src/bin/pg_ctl/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..c90c1030ef463564380d8d78ce04aab9b4a5fcf2
--- /dev/null
+++ b/src/bin/pg_ctl/.gitignore
@@ -0,0 +1 @@
+/pg_ctl
diff --git a/src/bin/pg_dump/.gitignore b/src/bin/pg_dump/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..c2c8677bd80e4bf598bb5c6b7d5a64bba726d6dc
--- /dev/null
+++ b/src/bin/pg_dump/.gitignore
@@ -0,0 +1,5 @@
+/kwlookup.c
+
+/pg_dump
+/pg_dumpall
+/pg_restore
diff --git a/src/bin/pg_resetxlog/.gitignore b/src/bin/pg_resetxlog/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..584590951fc6f84bd9f7a88a6892cc441c227dd2
--- /dev/null
+++ b/src/bin/pg_resetxlog/.gitignore
@@ -0,0 +1,3 @@
+/pg_crc.c
+
+/pg_resetxlog
diff --git a/src/bin/psql/.cvsignore b/src/bin/psql/.cvsignore
deleted file mode 100644
index d666d4cf4bbd58c14af377002493ff21495994b5..0000000000000000000000000000000000000000
--- a/src/bin/psql/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-psqlscan.c
-sql_help.h
-sql_help.c
diff --git a/src/bin/psql/.gitignore b/src/bin/psql/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4fbec70bffbb95ef52423df0172554e65de89ffe
--- /dev/null
+++ b/src/bin/psql/.gitignore
@@ -0,0 +1,8 @@
+/psqlscan.c
+/sql_help.h
+/sql_help.c
+/dumputils.c
+/keywords.c
+/kwlookup.c
+
+/psql
diff --git a/src/bin/scripts/.gitignore b/src/bin/scripts/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e62f4b03a7cfa478b7ec90dcf641adc707471328
--- /dev/null
+++ b/src/bin/scripts/.gitignore
@@ -0,0 +1,15 @@
+/clusterdb
+/createdb
+/createlang
+/createuser
+/dropdb
+/droplang
+/dropuser
+/reindexdb
+/vacuumdb
+
+/dumputils.c
+/keywords.c
+/kwlookup.c
+/mbprint.c
+/print.c
diff --git a/src/include/.gitignore b/src/include/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..fa285a1605dcea9de8746fa9fe3fdcbde1f9ef7c
--- /dev/null
+++ b/src/include/.gitignore
@@ -0,0 +1,5 @@
+/stamp-h
+/pg_config.h
+/pg_config_os.h
+/dynloader.h
+
diff --git a/src/include/catalog/.gitignore b/src/include/catalog/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..650202eb757e340e55a32d9485a7083da26c7e37
--- /dev/null
+++ b/src/include/catalog/.gitignore
@@ -0,0 +1 @@
+/schemapg.h
diff --git a/src/include/parser/.gitignore b/src/include/parser/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..19ea9554a070e891788c8cce778962f0cde7d87e
--- /dev/null
+++ b/src/include/parser/.gitignore
@@ -0,0 +1 @@
+/gram.h
diff --git a/src/include/utils/.gitignore b/src/include/utils/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..c7c402b3dc8ec4fac93a419fbdcaddc6ae38aabf
--- /dev/null
+++ b/src/include/utils/.gitignore
@@ -0,0 +1,2 @@
+/fmgroids.h
+/probes.h
diff --git a/src/interfaces/ecpg/compatlib/.cvsignore b/src/interfaces/ecpg/compatlib/.cvsignore
deleted file mode 100644
index 6631b2910f5c01b72427c852a72cec7efc38843d..0000000000000000000000000000000000000000
--- a/src/interfaces/ecpg/compatlib/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-libecpg_compatdll.def
-libecpg_compatddll.def
-blibecpg_compatdll.def
diff --git a/src/interfaces/ecpg/compatlib/.gitignore b/src/interfaces/ecpg/compatlib/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e4ba84ae302fac498a7dc8ef72d7875a743108c9
--- /dev/null
+++ b/src/interfaces/ecpg/compatlib/.gitignore
@@ -0,0 +1,4 @@
+/libecpg_compatdll.def
+/libecpg_compatddll.def
+/blibecpg_compatdll.def
+/exports.list
diff --git a/src/interfaces/ecpg/ecpglib/.cvsignore b/src/interfaces/ecpg/ecpglib/.cvsignore
deleted file mode 100644
index aff208f9265cca2b5558ce31431f4a6adf7466bb..0000000000000000000000000000000000000000
--- a/src/interfaces/ecpg/ecpglib/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-libecpgdll.def
-libecpgddll.def
-blibecpgdll.def
diff --git a/src/interfaces/ecpg/ecpglib/.gitignore b/src/interfaces/ecpg/ecpglib/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e6c60b16fcd2c189ff4a2b516f511933a2e79aa7
--- /dev/null
+++ b/src/interfaces/ecpg/ecpglib/.gitignore
@@ -0,0 +1,9 @@
+/libecpgdll.def
+/libecpgddll.def
+/blibecpgdll.def
+/exports.list
+
+/path.c
+/pgstrcasecmp.c
+/strlcpy.c
+/thread.c
diff --git a/src/interfaces/ecpg/include/.gitignore b/src/interfaces/ecpg/include/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..608493dbba272660880e1863e140bdea72f8eea4
--- /dev/null
+++ b/src/interfaces/ecpg/include/.gitignore
@@ -0,0 +1,2 @@
+/ecpg_config.h
+/stamp-h
diff --git a/src/interfaces/ecpg/pgtypeslib/.cvsignore b/src/interfaces/ecpg/pgtypeslib/.cvsignore
deleted file mode 100644
index b65650caf0b270fa22832ee7101dba39561c40ec..0000000000000000000000000000000000000000
--- a/src/interfaces/ecpg/pgtypeslib/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-libpgtypesdll.def
-libpgtypesddll.def
-blibpgtypesdll.def
diff --git a/src/interfaces/ecpg/pgtypeslib/.gitignore b/src/interfaces/ecpg/pgtypeslib/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..aa5bdb837f283f8002b88a26122f5c71e0dc3104
--- /dev/null
+++ b/src/interfaces/ecpg/pgtypeslib/.gitignore
@@ -0,0 +1,6 @@
+/libpgtypesdll.def
+/libpgtypesddll.def
+/blibpgtypesdll.def
+/exports.list
+
+/pgstrcasecmp.c
diff --git a/src/interfaces/ecpg/preproc/.cvsignore b/src/interfaces/ecpg/preproc/.cvsignore
deleted file mode 100644
index b89e31967286627ee5e81933496d134576f54084..0000000000000000000000000000000000000000
--- a/src/interfaces/ecpg/preproc/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-preproc.y
-preproc.c
-preproc.h
-pgc.c
diff --git a/src/interfaces/ecpg/preproc/.gitignore b/src/interfaces/ecpg/preproc/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..6fca9aff590627a777202d667335349c7fafbe07
--- /dev/null
+++ b/src/interfaces/ecpg/preproc/.gitignore
@@ -0,0 +1,7 @@
+/preproc.y
+/preproc.c
+/preproc.h
+/pgc.c
+
+/ecpg
+/kwlookup.c
diff --git a/src/interfaces/libpq/.cvsignore b/src/interfaces/libpq/.cvsignore
deleted file mode 100644
index f5f9ac0088987d34f74fd60001b9764eba6bb70d..0000000000000000000000000000000000000000
--- a/src/interfaces/libpq/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-libpqdll.def
-libpqddll.def
-blibpqdll.def
-libpq-dist.rc
diff --git a/src/interfaces/libpq/.gitignore b/src/interfaces/libpq/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..66be28c464cea7f8c7dd352bbfcce0f8e792211d
--- /dev/null
+++ b/src/interfaces/libpq/.gitignore
@@ -0,0 +1,9 @@
+/encnames.c
+/exports.list
+/ip.c
+/md5.c
+/noblock.c
+/pgstrcasecmp.c
+/strlcpy.c
+/thread.c
+/wchar.c
diff --git a/src/pl/plperl/.gitignore b/src/pl/plperl/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4ee7d6095b22d4ccffc0974f9083d80b8ef6d1f2
--- /dev/null
+++ b/src/pl/plperl/.gitignore
@@ -0,0 +1,4 @@
+/SPI.c
+/Util.c
+/perlchunks.h
+/plperl_opmask.h
diff --git a/src/pl/plpgsql/src/.cvsignore b/src/pl/plpgsql/src/.cvsignore
deleted file mode 100644
index fa18d49267b82f789d7853d0a45d3cfc62e8fe8e..0000000000000000000000000000000000000000
--- a/src/pl/plpgsql/src/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-pl_gram.c
-pl_gram.h
diff --git a/src/pl/plpgsql/src/.gitignore b/src/pl/plpgsql/src/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..2eecb0f20defe67beb22c1633bf83b3a77ed3748
--- /dev/null
+++ b/src/pl/plpgsql/src/.gitignore
@@ -0,0 +1,2 @@
+/pl_gram.c
+/pl_gram.h
diff --git a/src/port/.gitignore b/src/port/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..53a40324447c470bb5886bf3c9982fe14478faf8
--- /dev/null
+++ b/src/port/.gitignore
@@ -0,0 +1,3 @@
+/libpgport.a
+/libpgport_srv.a
+/pg_config_paths.h
diff --git a/src/test/regress/.gitignore b/src/test/regress/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..7573addc94dbecf4b2b2233c55463b0dc747b251
--- /dev/null
+++ b/src/test/regress/.gitignore
@@ -0,0 +1,7 @@
+# Local binaries
+/pg_regress
+
+# Generated subdirectories
+/tmp_check/
+/results/
+/log/
diff --git a/src/test/regress/expected/.gitignore b/src/test/regress/expected/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e14ce3aa673b3fbed18535735089790d962bac43
--- /dev/null
+++ b/src/test/regress/expected/.gitignore
@@ -0,0 +1,8 @@
+/constraints.out
+/copy.out
+/create_function_1.out
+/create_function_2.out
+/largeobject.out
+/largeobject_1.out
+/misc.out
+/tablespace.out
diff --git a/src/test/regress/sql/.gitignore b/src/test/regress/sql/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..0b7c2cf14ddfb43cbc9045f745b4be5551d18401
--- /dev/null
+++ b/src/test/regress/sql/.gitignore
@@ -0,0 +1,7 @@
+/constraints.sql
+/copy.sql
+/create_function_1.sql
+/create_function_2.sql
+/largeobject.sql
+/misc.sql
+/tablespace.sql
diff --git a/src/timezone/.gitignore b/src/timezone/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..f844c9fcf19db5f02bb248c1d9240eb8900248ff
--- /dev/null
+++ b/src/timezone/.gitignore
@@ -0,0 +1 @@
+/zic