From 6ae29df4d76fd276cf05dd622cdc347fa385493e Mon Sep 17 00:00:00 2001
From: Nick Craig-Wood <nick@craig-wood.com>
Date: Sun, 23 Jul 2017 13:23:42 +0100
Subject: [PATCH] Add commit message and updating a backend sections to
 CONTRIBUTING

---
 CONTRIBUTING.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 51 insertions(+), 1 deletion(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 58d623189..1aedf92ef 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -139,6 +139,41 @@ Documentation for rclone sub commands is with their code, eg
 There are separate instructions for making a release in the RELEASE.md
 file.
 
+## Commit messages ##
+
+Please make the first line of your commit message a summary of the
+change, and prefix it with the directory of the change followed by a
+colon.  The changelog gets made by looking at just these first lines
+so make it good!
+
+If you have more to say about the commit, then enter a blank line and
+carry on the description.  Remember to say why the change was needed -
+the commit itself shows what was changed.
+
+If the change fixes an issue then write `Fixes #1234` in the commit
+message.  This can be on the subject line if it will fit.  If you
+don't want to close the associated issue just put `#1234` and the
+change will get linked into the issue.
+
+Here is an example of a short commit message:
+
+```
+drive: add team drive support - fixes #885
+```
+
+And here is an example of a longer one:
+
+```
+mount: fix hang on errored upload
+
+In certain circumstances if an upload failed then the mount could hang
+indefinitely. This was fixed by closing the read pipe after the Put
+completed.  This will cause the write side to return a pipe closed
+error fixing the hang.
+
+Fixes #1498
+```
+
 ## Adding a dependency ##
 
 rclone uses the [dep](https://github.com/golang/dep) tool to manage
@@ -175,7 +210,22 @@ commit as above.
 
 This should be done early in the release cycle to pick up new versions
 of packages in time for them to get some testing.
-  
+
+## Updating a backend ##
+
+If you update a backend then please run the unit tests and the
+integration tests for that backend.
+
+Assuming the backend is called `remote`, make create a config entry
+called `TestRemote` for the tests to use.
+
+Now `cd remote` and run `go test -v` to run the unit tests.
+
+Then `cd fs` and run `go test -v -remote TestRemote:` to run the
+integration tests.
+
+The next section goes into more detail about the tests.
+
 ## Writing a new backend ##
 
 Choose a name.  The docs here will use `remote` as an example.