summaryrefslogtreecommitdiff
path: root/gitignore/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'gitignore/README.md')
-rw-r--r--gitignore/README.md156
1 files changed, 156 insertions, 0 deletions
diff --git a/gitignore/README.md b/gitignore/README.md
new file mode 100644
index 0000000..db17134
--- /dev/null
+++ b/gitignore/README.md
@@ -0,0 +1,156 @@
+# A collection of `.gitignore` templates
+
+This is GitHub’s collection of [`.gitignore`][man] file templates.
+We use this list to populate the `.gitignore` template choosers available
+in the GitHub.com interface when creating new repositories and files.
+
+For more information about how `.gitignore` files work, and how to use them,
+the following resources are a great place to start:
+
+- The [Ignoring Files chapter][chapter] of the [Pro Git][progit] book.
+- The [Ignoring Files article][help] on the GitHub Help site.
+- The [gitignore(5)][man] manual page.
+
+[man]: http://git-scm.com/docs/gitignore
+[help]: https://help.github.com/articles/ignoring-files
+[chapter]: https://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository#_ignoring
+[progit]: http://git-scm.com/book
+
+## Folder structure
+
+We support a collection of templates, organized in this way:
+
+- the root folder contains templates in common use, to help people get started
+ with popular programming languages and technologies. These define a meaningful
+ set of rules to help get started, and ensure you are not committing
+ unimportant files into your repository
+- [`Global`](./Global) contains templates for various editors, tools and
+ operating systems that can be used in different situations. It is recommended
+ that you either [add these to your global template](https://help.github.com/articles/ignoring-files/#create-a-global-gitignore)
+ or merge these rules into your project-specific templates if you want to use
+ them permanently.
+- [`community`](./community) contains specialized templates for other popular
+ languages, tools and project, which don't currently belong in the mainstream
+ templates. These should be added to your project-specific templates when you
+ decide to adopt the framework or tool.
+
+## What makes a good template?
+
+A template should contain a set of rules to help Git repositories work with a
+specific programming language, framework, tool or environment.
+
+If it's not possible to curate a small set of useful rules for this situation,
+then the template is not a good fit for this collection.
+
+If a template is mostly a list of files installed by a particular version of
+some software (e.g. a PHP framework), it could live under the `community`
+directory. See [versioned templates](#versioned-templates) for more details.
+
+If you have a small set of rules, or want to support a technology that is not
+widely in use, and still believe this will be helpful to others, please read the
+section about [specialized templates](#specialized-templates) for more details.
+
+If you believe your template is important and should be highly visible, please
+add details about the impact of the technology when you open a pull request. We
+may not accept it immediately, but we can promote it to the root at a later date
+based on interest.
+
+Please also understand that we can’t list every tool that ever existed.
+Our aim is to curate a collection of the _most common and helpful_ templates,
+not to make sure we cover every project possible. If we choose not to
+include your language, tool, or project, it’s not because it’s not awesome.
+
+## Contributing guidelines
+
+We’d love for you to help us improve this project. To help us keep this collection
+high quality, we request that contributions adhere to the following guidelines.
+
+- **Provide a link to the application or project’s homepage**. Unless it’s
+ extremely popular, there’s a chance the maintainers don’t know about or use
+ the language, framework, editor, app, or project your change applies to.
+
+- **Provide links to documentation** supporting the change you’re making.
+ Current, canonical documentation mentioning the files being ignored is best.
+ If documentation isn’t available to support your change, do the best you can
+ to explain what the files being ignored are for.
+
+- **Explain why you’re making a change**. Even if it seems self-evident, please
+ take a sentence or two to tell us why your change or addition should happen.
+ It’s especially helpful to articulate why this change applies to _everyone_
+ who works with the applicable technology, rather than just you or your team.
+
+- **Please consider the scope of your change**. If your change is specific to a
+ certain language or framework, then make sure the change is made to the
+ template for that language or framework, rather than to the template for an
+ editor, tool, or operating system.
+
+- **Please only modify _one template_ per pull request**. This helps keep pull
+ requests and feedback focused on a specific project or technology.
+
+In general, the more you can do to help us understand the change you’re making,
+the more likely we’ll be to accept your contribution quickly.
+
+## Versioned templates
+
+Some templates can change greatly between versions, and if you wish to contribute
+to this repository we need to follow this specific flow:
+
+- the template at the root should be the current supported version
+- the template at the root should not have a version in the filename (i.e.
+ "evergreen")
+- previous versions of templates should live under `community/`
+- previous versions of the template should embed the version in the filename,
+ for readability
+
+This helps ensure users get the latest version (because they'll use whatever is
+at the root) but helps maintainers support older versions still in the wild.
+
+## Specialized templates
+
+If you have a template that you would like to contribute, but it isn't quite
+mainstream, please consider adding this to the `community` directory under a
+folder that best suits where it belongs.
+
+The rules in your specialized template should be specific to the framework or
+tool, and any additional templates should be mentioned in a comment in the
+header of the template
+
+For example, this template might live at `community/DotNet/InforCRM.gitignore`:
+
+```
+# gitignore template for InforCRM (formerly SalesLogix)
+# website: https://www.infor.com/product-summary/cx/infor-crm/
+#
+# Recommended: VisualStudio.gitignore
+
+# Ignore model files that are auto-generated
+ModelIndex.xml
+ExportedFiles.xml
+
+# Ignore deployment files
+[Mm]odel/[Dd]eployment
+
+# Force include portal SupportFiles
+!Model/Portal/*/SupportFiles/[Bb]in/
+!Model/Portal/PortalTemplates/*/SupportFiles/[Bb]in
+```
+
+## Contributing workflow
+
+Here’s how we suggest you go about proposing a change to this project:
+
+1. [Fork this project][fork] to your account.
+2. [Create a branch][branch] for the change you intend to make.
+3. Make your changes to your fork.
+4. [Send a pull request][pr] from your fork’s branch to our `master` branch.
+
+Using the web-based interface to make changes is fine too, and will help you
+by automatically forking the project and prompting to send a pull request too.
+
+[fork]: https://help.github.com/articles/fork-a-repo/
+[branch]: https://help.github.com/articles/creating-and-deleting-branches-within-your-repository
+[pr]: https://help.github.com/articles/using-pull-requests/
+
+## License
+
+[CC0-1.0](./LICENSE).