{"action":"created","comment":{"url":"https://api.github.com/repos/caktus/developer-documentation/pulls/comments/49994063","id":49994063,"diff_hunk":"@@ -0,0 +1,557 @@\n+.. _upgrading:\n+\n+Upgrading Margarita\n+===================\n+\n+Before attempting to upgrade your project's Margarita version, please read `the overview document\n+about Margarita upgrades\n+<https://github.com/caktus/django-project-template/blob/master/docs/updates.rst>`_ first, to get a\n+high level view of the changes required.\n+\n+This document is going to outline the steps involved in upgrading a project which is using the\n+master branch of Margarita. We will be upgrading it to Margarita 1.4.0. Following this guide should\n+allow you to upgrade projects in a similar scenario. Projects which are already using a pinned\n+version of Margarita should be able to upgrade by following the `Margarita release notes\n+<https://github.com/caktus/margarita/blob/develop/CHANGES.rst>`_\n+\n+This guide assumes that all services are running on one server (with a pretend IP address of\n+1.2.3.4). If you have a multiple server setup, then anytime a fabric command has an ``-H`` flag,\n+you'll have to repeat that command once for each IP address in your fleet.\n+\n+\n+Prepare Repository\n+------------------\n+\n+.. WARNING::\n+   The new project template does not 'reconcile' secrets because it assumes that you have\n+   committed the encrypted versions to the repo, so syncing back-and-forth is not necessary. We\n+   haven't yet done that step for our project, so we need to be very careful about our secrets.\n+   Make sure to sync them (by doing a deploy or running ``fab get_secrets``) before going any\n+   further.\n+\n+\n+1. Get useful files from the new project template. Clone the `Django Project Template\n+   <https://github.com/caktus/django-project-template>`_ repo  into a directory adjacent to ours, so\n+   we can easily copy files we need:\n+\n+   .. code-block:: bash\n+\n+      ~/dev$ git clone git@github.com:caktus/django-project-template.git\n+      ~/dev$ ls\n+      django-project-template myproject\n+      ~/dev$ cd myproject\n+      ~/dev/myproject$\n+\n+\n+#. Copy some important files and directory to our project:\n+\n+   .. code-block:: bash\n+\n+      ~/dev/myproject$ mv fabfile.py fabfile.py.old\n+      ~/dev/myproject$ cp ../django-project-template/fabfile.py .\n+      ~/dev/myproject$ cp ../django-project-template/Vagrantfile .\n+      ~/dev/myproject$ cp ../django-project-template/install_salt.sh .\n+      ~/dev/myproject$ cp ../django-project-template/conf/master.tmpl conf/\n+      ~/dev/myproject$ rm conf/master.conf\n+      ~/dev/myproject$ cp ../django-project-template/conf/gpg.tmpl conf/\n+\n+#. Edit fabfile.py:\n+\n+   1. Make sure ``SALT_VERSION`` is ``2015.5.8``\n+   2. Change ``env.master`` in both the ``staging()`` and ``production()`` functions to be\n+      correct (get the value from fabfile.py.old)\n+\n+\n+Upgrade Margarita\n+-----------------\n+\n+#. Add to ``conf/pillar/project.sls``:\n+\n+   .. code-block:: yaml\n+\n+      margarita_version: 1.5.0\n+      less_version: 1.5.1   # or whatever you're currently using\n+      postgres_version: 9.1 # or whatever you're currently using\n+\n+#. Move the old states out of the way (don't leave them in the conf directory), and copy in the\n+   minimal new list:\n+\n+   .. code-block:: bash\n+\n+      ~/dev/myproject$ mv conf/salt salt.old\n+      ~/dev/myproject$ cp -r ../django-project-template/conf/salt conf/\n+\n+\n+Single Deploy settings\n+----------------------\n+\n+Our current deployment expects all Django settings to be in a single module named ``deploy.py``.\n+We need to merge the ``staging.py`` and ``production.py`` files into one called ``deploy.py``.\n+The easiest way is to create a new file called ``deploy.py`` with this content:\n+\n+.. code-block:: python\n+\n+   import os\n+   ENVIRONMENT = os.environ['ENVIRONMENT']\n+   if ENVIRONMENT == 'staging':\n+       from .staging import *\n+   elif ENVIRONMENT == 'production':\n+       from .production import *\n+   else:\n+       from .local import *\n+\n+That should be refactored ASAP to get rid of the staging and production files.\n+\n+Dotenv\n+------\n+\n+#. Add ``myproject/load_env.py`` (same dir as root ``urls.py``):\n+\n+   .. code-block:: python\n+\n+      from os.path import dirname, join\n+      import dotenv\n+\n+\n+      def load_env():\n+          \"Get the path to the .env file and load it.\"\n+          project_dir = dirname(dirname(__file__))\n+          dotenv.read_dotenv(join(project_dir, '.env'))\n+\n+#. Modify ``myproject/celery.py``:\n+\n+   .. code-block:: diff\n+\n+      Modified   myproject/celery.py\n+      diff --git a/myproject/celery.py b/myproject/celery.py\n+      index d9a4e87..4f5a199 100644\n+      --- a/myproject/celery.py\n+      +++ b/myproject/celery.py\n+      @@ -11,2 +11,5 @@ from celery import Celery\n+\n+      +from . import load_env\n+      +load_env.load_env()\n+      +\n+\n+#. Modify ``myproject/wsgi.py``:\n+\n+   .. code-block:: diff\n+\n+      Modified   myproject/wsgi.py\n+      diff --git a/myproject/wsgi.py b/myproject/wsgi.py\n+      index 69e0323..28cb28d 100644\n+      --- a/myproject/wsgi.py\n+      +++ b/myproject/wsgi.py\n+      @@ -16,3 +16,5 @@ framework.\n+       import os\n+      +from . import load_env\n+\n+      +load_env.load_env()\n+\n+#. Modify ``manage.py``:\n+\n+   .. code-block:: diff\n+\n+      Modified   manage.py\n+      diff --git a/manage.py b/manage.py\n+      index cb48c9e..8bc2fce 100644\n+      --- a/manage.py\n+      +++ b/manage.py\n+      @@ -4,2 +4,5 @@ import sys\n+\n+      +import dotenv\n+      +dotenv.read_dotenv()\n+      +\n+       if __name__ == \"__main__\":\n+\n+#. Modify ``requirements/base.txt``:\n+\n+   .. code-block:: diff\n+\n+      Modified   requirements/base.txt\n+      diff --git a/requirements/base.txt b/requirements/base.txt\n+      index 2bb6ff2..ca74917 100644\n+      --- a/requirements/base.txt\n+      +++ b/requirements/base.txt\n+      +\n+      +django-dotenv==1.3.0\n+\n+#. Modify ``README.rst`` (and follow those instructions for your local setup):\n+\n+   .. code-block:: diff\n+\n+      Modified   README.rst\n+      diff --git a/README.rst b/README.rst\n+      index c45b564..8c456be 100644\n+      --- a/README.rst\n+      +++ b/README.rst\n+      @@ -27,7 +27,9 @@ necessary requirements::\n+\n+      -Then create a local settings file and set your ``DJANGO_SETTINGS_MODULE`` to use it::\n+      +Next, we'll set up our local environment variables. We use `django-dotenv\n+      +<https://github.com/jpadilla/django-dotenv>`_ to help with this. It reads environment variables\n+      +located in a file name ``.env`` in the top level directory of the project. The only variable we need\n+      +to start is ``DJANGO_SETTINGS_MODULE``::\n+\n+      -    cp myproject/settings/local.example.py myproject/settings/local_dev.py\n+      -    echo \"export DJANGO_SETTINGS_MODULE=myproject.settings.local_dev\" >> $VIRTUAL_ENV/bin/postactivate\n+      -    echo \"unset DJANGO_SETTINGS_MODULE\" >> $VIRTUAL_ENV/bin/postdeactivate\n+      +    (myproject)$ cp myproject/settings/local.example.py myproject/settings/local.py\n+      +    (myproject)$ echo \"DJANGO_SETTINGS_MODULE=myproject.settings.local\" > .env\n+\n+\n+Update ALLOWED_HOSTS\n+--------------------\n+\n+Find the ``ALLOWED_HOSTS`` setting (probably in ``staging.py``) and change it to use ``DOMAIN``:\n+\n+.. code-block:: diff\n+\n+   Modified   myproject/settings/staging.py\n+   diff --git a/myproject/settings/staging.py b/myproject/settings/staging.py\n+   index db7b3b4..be4024d 100644\n+   --- a/myproject/settings/staging.py\n+   +++ b/myproject/settings/staging.py\n+   @@ -34,3 +34,3 @@ SESSION_COOKIE_HTTPONLY = True\n+\n+   -ALLOWED_HOSTS = os.environ.get('ALLOWED_HOSTS', '').split(';')\n+   +ALLOWED_HOSTS = [os.environ['DOMAIN']]\n+\n+Frontend Improvements\n+---------------------\n+\n+Prepare for Calvin's frontend improvements. Add a *dummy* ``package.json`` which can be updated\n+later. Until it is updated, the frontend improvements won't take effect:\n+\n+.. code-block:: json\n+\n+   {\n+     \"name\": \"\",\n+     \"version\": \"0.0.0\",\n+     \"description\": \"\",\n+     \"main\": \"\",\n+     \"engines\" : {\n+       \"node\" : \">=4.2 <4.3\"\n+     },\n+     \"scripts\": {\n+       \"build\": \"true\"\n+     },\n+     \"author\": \"\",\n+     \"license\": \"\",\n+     \"dependencies\": {},\n+     \"devDependencies\": {}\n+   }\n+\n+\n+Miscellaneous work\n+------------------\n+\n+Technically, you can skip the steps in this section and come back to them later. Even without them,\n+you should be able to get a server upgraded, but they **will** have to be done at some point.\n+\n+1. Port any useful functions in ``fabfile.py.old`` to the new fabfile, then remove the old one.\n+\n+#. Get a copy of the ``Makefile`` from the project template, porting any functions in your existing\n+   one to the new one, if needed.\n+\n+#. Review everything in ``salt.old`` to see which pieces are specific to your project and need to\n+   be added back into salt. If any of it is generally useful (i.e. setting up a service that\n+   might be used on another project), then consider adding a PR to margarita so this config can\n+   be completely removed from your project.\n+\n+   This part is difficult to generalize... Sorry. You kinda have to look in each state file and\n+   make sure that service is properly accounted for in the new Margarita system.\n+\n+#. Look at the following files in django-project-template to see if your project could benefit\n+   from any changes:\n+\n+   * .coveragerc\n+   * .gitignore\n+   * README.rst\n+   * setup.cfg\n+   * .travis.yml (look at project.travis.yml)\n+\n+Vagrant Smoke Test\n+------------------\n+\n+Now, we're going to create a fresh Vagrant VM just to make sure that our current repository deploys\n+correctly.\n+\n+#. Edit ``conf/pillar/local/env.sls`` to look like this:\n+\n+   .. code-block:: yaml\n+\n+      environment: local\n+      domain: margarita.example.com\n+\n+#. Edit ``conf/pillar/local/secrets.sls`` to look like this:\n+\n+   .. code-block:: yaml\n+\n+      secrets:\n+        DB_PASSWORD: \"dbPassword\"\n+        BROKER_PASSWORD: \"brokerPassword\"\n+\n+#. Add the following line to your laptop's ``/etc/hosts`` file::\n+\n+     33.33.33.10 margarita.example.com\n+\n+#. Make sure we're starting from a fresh VM:\n+\n+   .. code-block:: bash\n+\n+      ~/dev/myproject$ vagrant destroy\n+      ~/dev/myproject$ vagrant up\n+\n+#. Deploy!\n+\n+   .. code-block:: bash\n+\n+      ~/dev/myproject$ fab vagrant setup_master\n+      ~/dev/myproject$ fab -H 127.0.0.1:2222 vagrant setup_minion setup_minion:salt-master,web,worker,balancer,db-master,queue,cache","path":"source/margarita/upgrading.rst","position":311,"original_position":311,"commit_id":"4275b636e2d25db8abee9d1c31cd7296d26d7484","original_commit_id":"4275b636e2d25db8abee9d1c31cd7296d26d7484","user":{"login":"dpoirier","id":2788679,"avatar_url":"https://avatars.githubusercontent.com/u/2788679?v=3","gravatar_id":"","url":"https://api.github.com/users/dpoirier","html_url":"https://github.com/dpoirier","followers_url":"https://api.github.com/users/dpoirier/followers","following_url":"https://api.github.com/users/dpoirier/following{/other_user}","gists_url":"https://api.github.com/users/dpoirier/gists{/gist_id}","starred_url":"https://api.github.com/users/dpoirier/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dpoirier/subscriptions","organizations_url":"https://api.github.com/users/dpoirier/orgs","repos_url":"https://api.github.com/users/dpoirier/repos","events_url":"https://api.github.com/users/dpoirier/events{/privacy}","received_events_url":"https://api.github.com/users/dpoirier/received_events","type":"User","site_admin":false},"body":"This invokes `setup_minion` twice.","created_at":"2016-01-18T12:42:22Z","updated_at":"2016-01-18T12:42:22Z","html_url":"https://github.com/caktus/developer-documentation/pull/19#discussion_r49994063","pull_request_url":"https://api.github.com/repos/caktus/developer-documentation/pulls/19","_links":{"self":{"href":"https://api.github.com/repos/caktus/developer-documentation/pulls/comments/49994063"},"html":{"href":"https://github.com/caktus/developer-documentation/pull/19#discussion_r49994063"},"pull_request":{"href":"https://api.github.com/repos/caktus/developer-documentation/pulls/19"}}},"pull_request":{"url":"https://api.github.com/repos/caktus/developer-documentation/pulls/19","id":56094301,"html_url":"https://github.com/caktus/developer-documentation/pull/19","diff_url":"https://github.com/caktus/developer-documentation/pull/19.diff","patch_url":"https://github.com/caktus/developer-documentation/pull/19.patch","issue_url":"https://api.github.com/repos/caktus/developer-documentation/issues/19","number":19,"state":"open","locked":false,"title":"{DJAN-5} Margarita upgrade instructions","user":{"login":"vkurup","id":4413,"avatar_url":"https://avatars.githubusercontent.com/u/4413?v=3","gravatar_id":"","url":"https://api.github.com/users/vkurup","html_url":"https://github.com/vkurup","followers_url":"https://api.github.com/users/vkurup/followers","following_url":"https://api.github.com/users/vkurup/following{/other_user}","gists_url":"https://api.github.com/users/vkurup/gists{/gist_id}","starred_url":"https://api.github.com/users/vkurup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vkurup/subscriptions","organizations_url":"https://api.github.com/users/vkurup/orgs","repos_url":"https://api.github.com/users/vkurup/repos","events_url":"https://api.github.com/users/vkurup/events{/privacy}","received_events_url":"https://api.github.com/users/vkurup/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-01-14T21:11:50Z","updated_at":"2016-01-18T12:42:22Z","closed_at":null,"merged_at":null,"merge_commit_sha":"13e66babec81e889f7e7bfc6228898bf35cc1ed8","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/caktus/developer-documentation/pulls/19/commits","review_comments_url":"https://api.github.com/repos/caktus/developer-documentation/pulls/19/comments","review_comment_url":"https://api.github.com/repos/caktus/developer-documentation/pulls/comments{/number}","comments_url":"https://api.github.com/repos/caktus/developer-documentation/issues/19/comments","statuses_url":"https://api.github.com/repos/caktus/developer-documentation/statuses/4275b636e2d25db8abee9d1c31cd7296d26d7484","head":{"label":"caktus:margarita-update-instructions","ref":"margarita-update-instructions","sha":"4275b636e2d25db8abee9d1c31cd7296d26d7484","user":{"login":"caktus","id":242157,"avatar_url":"https://avatars.githubusercontent.com/u/242157?v=3","gravatar_id":"","url":"https://api.github.com/users/caktus","html_url":"https://github.com/caktus","followers_url":"https://api.github.com/users/caktus/followers","following_url":"https://api.github.com/users/caktus/following{/other_user}","gists_url":"https://api.github.com/users/caktus/gists{/gist_id}","starred_url":"https://api.github.com/users/caktus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/caktus/subscriptions","organizations_url":"https://api.github.com/users/caktus/orgs","repos_url":"https://api.github.com/users/caktus/repos","events_url":"https://api.github.com/users/caktus/events{/privacy}","received_events_url":"https://api.github.com/users/caktus/received_events","type":"Organization","site_admin":false},"repo":{"id":36749447,"name":"developer-documentation","full_name":"caktus/developer-documentation","owner":{"login":"caktus","id":242157,"avatar_url":"https://avatars.githubusercontent.com/u/242157?v=3","gravatar_id":"","url":"https://api.github.com/users/caktus","html_url":"https://github.com/caktus","followers_url":"https://api.github.com/users/caktus/followers","following_url":"https://api.github.com/users/caktus/following{/other_user}","gists_url":"https://api.github.com/users/caktus/gists{/gist_id}","starred_url":"https://api.github.com/users/caktus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/caktus/subscriptions","organizations_url":"https://api.github.com/users/caktus/orgs","repos_url":"https://api.github.com/users/caktus/repos","events_url":"https://api.github.com/users/caktus/events{/privacy}","received_events_url":"https://api.github.com/users/caktus/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/caktus/developer-documentation","description":"","fork":false,"url":"https://api.github.com/repos/caktus/developer-documentation","forks_url":"https://api.github.com/repos/caktus/developer-documentation/forks","keys_url":"https://api.github.com/repos/caktus/developer-documentation/keys{/key_id}","collaborators_url":"https://api.github.com/repos/caktus/developer-documentation/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/caktus/developer-documentation/teams","hooks_url":"https://api.github.com/repos/caktus/developer-documentation/hooks","issue_events_url":"https://api.github.com/repos/caktus/developer-documentation/issues/events{/number}","events_url":"https://api.github.com/repos/caktus/developer-documentation/events","assignees_url":"https://api.github.com/repos/caktus/developer-documentation/assignees{/user}","branches_url":"https://api.github.com/repos/caktus/developer-documentation/branches{/branch}","tags_url":"https://api.github.com/repos/caktus/developer-documentation/tags","blobs_url":"https://api.github.com/repos/caktus/developer-documentation/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/caktus/developer-documentation/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/caktus/developer-documentation/git/refs{/sha}","trees_url":"https://api.github.com/repos/caktus/developer-documentation/git/trees{/sha}","statuses_url":"https://api.github.com/repos/caktus/developer-documentation/statuses/{sha}","languages_url":"https://api.github.com/repos/caktus/developer-documentation/languages","stargazers_url":"https://api.github.com/repos/caktus/developer-documentation/stargazers","contributors_url":"https://api.github.com/repos/caktus/developer-documentation/contributors","subscribers_url":"https://api.github.com/repos/caktus/developer-documentation/subscribers","subscription_url":"https://api.github.com/repos/caktus/developer-documentation/subscription","commits_url":"https://api.github.com/repos/caktus/developer-documentation/commits{/sha}","git_commits_url":"https://api.github.com/repos/caktus/developer-documentation/git/commits{/sha}","comments_url":"https://api.github.com/repos/caktus/developer-documentation/comments{/number}","issue_comment_url":"https://api.github.com/repos/caktus/developer-documentation/issues/comments{/number}","contents_url":"https://api.github.com/repos/caktus/developer-documentation/contents/{+path}","compare_url":"https://api.github.com/repos/caktus/developer-documentation/compare/{base}...{head}","merges_url":"https://api.github.com/repos/caktus/developer-documentation/merges","archive_url":"https://api.github.com/repos/caktus/developer-documentation/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/caktus/developer-documentation/downloads","issues_url":"https://api.github.com/repos/caktus/developer-documentation/issues{/number}","pulls_url":"https://api.github.com/repos/caktus/developer-documentation/pulls{/number}","milestones_url":"https://api.github.com/repos/caktus/developer-documentation/milestones{/number}","notifications_url":"https://api.github.com/repos/caktus/developer-documentation/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/caktus/developer-documentation/labels{/name}","releases_url":"https://api.github.com/repos/caktus/developer-documentation/releases{/id}","created_at":"2015-06-02T17:24:39Z","updated_at":"2016-01-11T13:21:14Z","pushed_at":"2016-01-18T12:23:52Z","git_url":"git://github.com/caktus/developer-documentation.git","ssh_url":"git@github.com:caktus/developer-documentation.git","clone_url":"https://github.com/caktus/developer-documentation.git","svn_url":"https://github.com/caktus/developer-documentation","homepage":"http://caktus.github.io/developer-documentation","size":540,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":6,"forks":0,"open_issues":6,"watchers":0,"default_branch":"gh-pages"}},"base":{"label":"caktus:gh-pages","ref":"gh-pages","sha":"962d7f40216c9febf3423c26f1b97aa39bc4dc28","user":{"login":"caktus","id":242157,"avatar_url":"https://avatars.githubusercontent.com/u/242157?v=3","gravatar_id":"","url":"https://api.github.com/users/caktus","html_url":"https://github.com/caktus","followers_url":"https://api.github.com/users/caktus/followers","following_url":"https://api.github.com/users/caktus/following{/other_user}","gists_url":"https://api.github.com/users/caktus/gists{/gist_id}","starred_url":"https://api.github.com/users/caktus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/caktus/subscriptions","organizations_url":"https://api.github.com/users/caktus/orgs","repos_url":"https://api.github.com/users/caktus/repos","events_url":"https://api.github.com/users/caktus/events{/privacy}","received_events_url":"https://api.github.com/users/caktus/received_events","type":"Organization","site_admin":false},"repo":{"id":36749447,"name":"developer-documentation","full_name":"caktus/developer-documentation","owner":{"login":"caktus","id":242157,"avatar_url":"https://avatars.githubusercontent.com/u/242157?v=3","gravatar_id":"","url":"https://api.github.com/users/caktus","html_url":"https://github.com/caktus","followers_url":"https://api.github.com/users/caktus/followers","following_url":"https://api.github.com/users/caktus/following{/other_user}","gists_url":"https://api.github.com/users/caktus/gists{/gist_id}","starred_url":"https://api.github.com/users/caktus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/caktus/subscriptions","organizations_url":"https://api.github.com/users/caktus/orgs","repos_url":"https://api.github.com/users/caktus/repos","events_url":"https://api.github.com/users/caktus/events{/privacy}","received_events_url":"https://api.github.com/users/caktus/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/caktus/developer-documentation","description":"","fork":false,"url":"https://api.github.com/repos/caktus/developer-documentation","forks_url":"https://api.github.com/repos/caktus/developer-documentation/forks","keys_url":"https://api.github.com/repos/caktus/developer-documentation/keys{/key_id}","collaborators_url":"https://api.github.com/repos/caktus/developer-documentation/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/caktus/developer-documentation/teams","hooks_url":"https://api.github.com/repos/caktus/developer-documentation/hooks","issue_events_url":"https://api.github.com/repos/caktus/developer-documentation/issues/events{/number}","events_url":"https://api.github.com/repos/caktus/developer-documentation/events","assignees_url":"https://api.github.com/repos/caktus/developer-documentation/assignees{/user}","branches_url":"https://api.github.com/repos/caktus/developer-documentation/branches{/branch}","tags_url":"https://api.github.com/repos/caktus/developer-documentation/tags","blobs_url":"https://api.github.com/repos/caktus/developer-documentation/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/caktus/developer-documentation/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/caktus/developer-documentation/git/refs{/sha}","trees_url":"https://api.github.com/repos/caktus/developer-documentation/git/trees{/sha}","statuses_url":"https://api.github.com/repos/caktus/developer-documentation/statuses/{sha}","languages_url":"https://api.github.com/repos/caktus/developer-documentation/languages","stargazers_url":"https://api.github.com/repos/caktus/developer-documentation/stargazers","contributors_url":"https://api.github.com/repos/caktus/developer-documentation/contributors","subscribers_url":"https://api.github.com/repos/caktus/developer-documentation/subscribers","subscription_url":"https://api.github.com/repos/caktus/developer-documentation/subscription","commits_url":"https://api.github.com/repos/caktus/developer-documentation/commits{/sha}","git_commits_url":"https://api.github.com/repos/caktus/developer-documentation/git/commits{/sha}","comments_url":"https://api.github.com/repos/caktus/developer-documentation/comments{/number}","issue_comment_url":"https://api.github.com/repos/caktus/developer-documentation/issues/comments{/number}","contents_url":"https://api.github.com/repos/caktus/developer-documentation/contents/{+path}","compare_url":"https://api.github.com/repos/caktus/developer-documentation/compare/{base}...{head}","merges_url":"https://api.github.com/repos/caktus/developer-documentation/merges","archive_url":"https://api.github.com/repos/caktus/developer-documentation/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/caktus/developer-documentation/downloads","issues_url":"https://api.github.com/repos/caktus/developer-documentation/issues{/number}","pulls_url":"https://api.github.com/repos/caktus/developer-documentation/pulls{/number}","milestones_url":"https://api.github.com/repos/caktus/developer-documentation/milestones{/number}","notifications_url":"https://api.github.com/repos/caktus/developer-documentation/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/caktus/developer-documentation/labels{/name}","releases_url":"https://api.github.com/repos/caktus/developer-documentation/releases{/id}","created_at":"2015-06-02T17:24:39Z","updated_at":"2016-01-11T13:21:14Z","pushed_at":"2016-01-18T12:23:52Z","git_url":"git://github.com/caktus/developer-documentation.git","ssh_url":"git@github.com:caktus/developer-documentation.git","clone_url":"https://github.com/caktus/developer-documentation.git","svn_url":"https://github.com/caktus/developer-documentation","homepage":"http://caktus.github.io/developer-documentation","size":540,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":6,"forks":0,"open_issues":6,"watchers":0,"default_branch":"gh-pages"}},"_links":{"self":{"href":"https://api.github.com/repos/caktus/developer-documentation/pulls/19"},"html":{"href":"https://github.com/caktus/developer-documentation/pull/19"},"issue":{"href":"https://api.github.com/repos/caktus/developer-documentation/issues/19"},"comments":{"href":"https://api.github.com/repos/caktus/developer-documentation/issues/19/comments"},"review_comments":{"href":"https://api.github.com/repos/caktus/developer-documentation/pulls/19/comments"},"review_comment":{"href":"https://api.github.com/repos/caktus/developer-documentation/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/caktus/developer-documentation/pulls/19/commits"},"statuses":{"href":"https://api.github.com/repos/caktus/developer-documentation/statuses/4275b636e2d25db8abee9d1c31cd7296d26d7484"}}}}