)]}'
{
  "log": [
    {
      "commit": "8762722ceade2eb364b09527320915310d322128",
      "tree": "12f300a8d6717ccf2278878d4c383879c978fc81",
      "parents": [
        "cd8c0a1ab2e956ca125207582fc3f0e99cf7f42d"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 28 09:42:01 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 28 11:48:50 2016 +0300"
      },
      "message": "Implemented \u0027update\u0027 option for rsync_ops.symlink and functional test\n\nChange-Id: Ia9741e188f0c88bc5cca9b7db4b30578bcf84e6f\n"
    },
    {
      "commit": "cd8c0a1ab2e956ca125207582fc3f0e99cf7f42d",
      "tree": "cde3981fb19c67205188e1b2bbb2946580678375",
      "parents": [
        "2422e0be00e6edd058fc599ea39931fd0d790050"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 22 15:50:29 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 23 10:38:04 2016 +0300"
      },
      "message": "Added output of error-message on server fail\n\nChange-Id: Ib761b6dc842009d435b68c1c9e60f7a89c7a1d46\n"
    },
    {
      "commit": "2422e0be00e6edd058fc599ea39931fd0d790050",
      "tree": "05ff173275dfca0c396830eb1923191bfadc86f4",
      "parents": [
        "dec003b24d88e26e337cb42f75e163b951fa1280"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 22 17:12:31 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 22 17:12:31 2016 +0300"
      },
      "message": "push help updated\n\nChange-Id: I8eb174d6f273a72bd2ccbe1e524590f9f2c305d0\n"
    },
    {
      "commit": "dec003b24d88e26e337cb42f75e163b951fa1280",
      "tree": "e5ff71ca67f861b473a8184cad68d864b58afce1",
      "parents": [
        "bba98eb4457c2ec92b7a9edc4ec005daff38e8c2"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 22 15:50:29 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 22 16:07:38 2016 +0300"
      },
      "message": "Updated final report out\n\nChange-Id: I5c0a1e3fa99e798224b51bcd3bb2ca5bd764ad19\n"
    },
    {
      "commit": "bba98eb4457c2ec92b7a9edc4ec005daff38e8c2",
      "tree": "8274aa10e6b254edb9d9ec680d33bb5ed09592d0",
      "parents": [
        "5eff3e645fd2e3a8fd27ad39ef9b61bfc5248bc8"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 22 15:35:33 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 22 15:35:33 2016 +0300"
      },
      "message": "Fix: removed dublicate call of init_directory_structure\n\nChange-Id: Iccf7fc7ee0fa6c74b3beb38f78c64243f0f002c2\n"
    },
    {
      "commit": "5eff3e645fd2e3a8fd27ad39ef9b61bfc5248bc8",
      "tree": "66b5d0765e62481250452263c8cb2602675f1c0e",
      "parents": [
        "9b261df36aff31b7d87ed3491b12994f361bc925"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 22 12:12:14 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 22 12:12:14 2016 +0300"
      },
      "message": "Fix logger name on TRsync\n\nChange-Id: Ic5c0e8858ba807e3b7dfe123e00cb6c180646d69\n"
    },
    {
      "commit": "9b261df36aff31b7d87ed3491b12994f361bc925",
      "tree": "b7dcceb9ca5b27a3ee62711027e707604619de69",
      "parents": [
        "92ca005e6ba0feef55c1b417daa3d70c74d9c53f"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 20 15:33:46 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 20 15:33:46 2016 +0300"
      },
      "message": "Logging optimized\n\nChange-Id: Ifb8a51ab2449db111d6b2e7f3bbfa75314031608\n"
    },
    {
      "commit": "92ca005e6ba0feef55c1b417daa3d70c74d9c53f",
      "tree": "51f139526933b9060d50789094124a200ceddbcf",
      "parents": [
        "9a6ae14e28a7a8bd8ddd018068ddb6215e075084"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 20 13:05:45 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 20 13:05:45 2016 +0300"
      },
      "message": "Fixed transaction rollback on failed sync\n\nChange-Id: Id9448045ec2cfe71882a989391dc9035ff6f6897\n"
    },
    {
      "commit": "9a6ae14e28a7a8bd8ddd018068ddb6215e075084",
      "tree": "e5f5be4527de56672446421ce3978bc6fef8e908",
      "parents": [
        "767342bc268e547a34510d6ad7602e1d6edff637"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 20 13:03:05 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 20 13:03:05 2016 +0300"
      },
      "message": "Fix: output error message after the stdout\n\nChange-Id: I89d08ea6868b84dfdea0e6c6e980fb94415a40b9\n"
    },
    {
      "commit": "767342bc268e547a34510d6ad7602e1d6edff637",
      "tree": "20ad7b3383231c255ebadde0c081618c2c5cbb7f",
      "parents": [
        "df9bcf9be45a75f1f908ff4c5081bfea7c1fd3b2"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Jun 17 11:17:06 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Jun 17 12:06:24 2016 +0300"
      },
      "message": "Implemented trsync.push from remote to local url\n\nChange-Id: Ice25938fc245b760ea5568f963333bf4685f79b2\n"
    },
    {
      "commit": "df9bcf9be45a75f1f908ff4c5081bfea7c1fd3b2",
      "tree": "c0365ed12515a5d907f11861fcb98bae089923a9",
      "parents": [
        "3514bd0543efa6532feec19b405c48f0fe5b0d68"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Jun 17 11:16:12 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Jun 17 11:16:12 2016 +0300"
      },
      "message": "Fix: transmite init_directory_structure to base constructor\n\nChange-Id: I4636894501e5aa9377c35ef7f3b6ffa3bfe95094\n"
    },
    {
      "commit": "3514bd0543efa6532feec19b405c48f0fe5b0d68",
      "tree": "ca4f13f9d364faaa2ebfae26254cd772764858fa",
      "parents": [
        "9f5e54eeff505387cc2bae0cee313c291179fc72"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 16 12:47:27 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 16 12:56:25 2016 +0300"
      },
      "message": "Separate unit and functional tests\n\nChange-Id: Ibb0e86a6e9ffd59849ce2c2cef05fa6d931b9d64\nCloses-Bug: #1592804\n"
    },
    {
      "commit": "9f5e54eeff505387cc2bae0cee313c291179fc72",
      "tree": "ad8d145af231fa15293bb6199bf06a0ea6f4a691",
      "parents": [
        "3ed87d225d39f7d306700d9f89d1027ff81d7f79"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 08 23:40:52 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 15 14:55:09 2016 +0300"
      },
      "message": "Refactored rsync_mirror.TRsync with functional tests\n\nCLI tools updated according with API changes\nPEP8 fixes\n\nCloses-Bug: #1570260\nCloses-Bug: #1575759\nChange-Id: I26b3547854d670da2da94d469f88a3ea057f07db\n"
    },
    {
      "commit": "3ed87d225d39f7d306700d9f89d1027ff81d7f79",
      "tree": "581d749544716cb8afe026b85a8ca866484f92b4",
      "parents": [
        "376aab00b2aa2c3a30ef038a5e513a55ebf5d8c3"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 08 22:44:03 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 15 14:42:59 2016 +0300"
      },
      "message": "RsyncRemote refactored with functional tests\n\nPEP8 fixes\n\nRelated-Bug: #1570260\nPartial-Bug: #1575759\nChange-Id: I4a44ca3e2134dd67b25a3b3f57edbd46d7e237ca\n"
    },
    {
      "commit": "376aab00b2aa2c3a30ef038a5e513a55ebf5d8c3",
      "tree": "a6356e7ef9f7d81e3eb748233570cb25ebe2736d",
      "parents": [
        "b476ee0d1fde8c4335ce5e816e7b4fbcde61ae07"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 07 14:16:43 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 15 14:42:59 2016 +0300"
      },
      "message": "Basic rsync operations allocated to separated rsync_ops module\n\nFunctional tests implemented\nPEP8 fixes\n\nRelated-Bug: #1570260\nPartial-Bug: #1575759\nChange-Id: I863658cebeae47e830591a1973ee1832a51e55e7\n"
    },
    {
      "commit": "b476ee0d1fde8c4335ce5e816e7b4fbcde61ae07",
      "tree": "a94a41627f5ea56a55a8b231fff101b2244d0800",
      "parents": [
        "5d7737fb69d6cd39d68a393be2b993349c9f7636"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 14 16:50:01 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 14 16:51:23 2016 +0300"
      },
      "message": "Added logging of error rsync output if exists\n\nChange-Id: I13c22219ab5f5d1377cd794d88cb94d57dedda98\n"
    },
    {
      "commit": "5d7737fb69d6cd39d68a393be2b993349c9f7636",
      "tree": "96b943f7fcd19cfa118760565878d4bbdde332d0",
      "parents": [
        "0a16243e4bad2cc7d3480a993213b8e718bb98e5"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 09 14:50:41 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 09 14:54:31 2016 +0300"
      },
      "message": "Fixed import in shell\n\nRelated-Bug: #1570260\nChange-Id: I4a3e8f3b97c363d9faf22d655895bc0e523ca7f9\n"
    },
    {
      "commit": "0a16243e4bad2cc7d3480a993213b8e718bb98e5",
      "tree": "39a58dafc38bf3cf7db16d7b099605f6e5bc2102",
      "parents": [
        "14409ee2b2e7cf07a85d36a5410aea4e378762a7"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 07 14:10:13 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 09 14:47:31 2016 +0300"
      },
      "message": "Implemented basic class for functional tests\n\nFunctional tests uses rsyncd instances and file system\nPEP8 fixes\n\nRelated-Bug: #1570260\nPartial-Bug: #1575759\nChange-Id: Id6533aba293b4a50be04967b68fb1827dec8141a\n"
    },
    {
      "commit": "14409ee2b2e7cf07a85d36a5410aea4e378762a7",
      "tree": "07f0d5add061f918eea313f82464374a703f8ba6",
      "parents": [
        "67c6684cb96f3b257c7a03ba77cbfd598dec49bc"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 07 14:04:19 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 09 14:47:31 2016 +0300"
      },
      "message": "Base logger renamed and PEP8 fixes\n\nRelated-Bug: #1570260\nPartial-Bug: #1575759\nChange-Id: I2c37cf9800accf41f544fb257896ee712b2a7878\n"
    },
    {
      "commit": "67c6684cb96f3b257c7a03ba77cbfd598dec49bc",
      "tree": "c94c73cbd2e09ce24ce9c1f7b1c0f3d8470124ee",
      "parents": [
        "492eb3c00e1a242feaf3218ab814baee489cbfa3"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 07 14:03:06 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 09 14:47:31 2016 +0300"
      },
      "message": "TempFiles fixes\n\nFunctional and PEP8\n\nRelated-Bug: #1570260\nPartial-Bug: #1575759\nChange-Id: I5397aad3f958d139697f941fe0107a95178f9d2e\n"
    },
    {
      "commit": "492eb3c00e1a242feaf3218ab814baee489cbfa3",
      "tree": "57146860c0492be73334b7d36758c449377c70e2",
      "parents": [
        "9ae40e5b5b2bdde89c6a70cc6306997421d44f1a"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 07 13:56:23 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 09 12:55:17 2016 +0300"
      },
      "message": "Implemented RsyncUrl.path_relative with tests\n\nPEP8 fixes\n\nRelated-Bug: #1570260\nPartial-Bug: #1575759\nChange-Id: If3c1e5b4ad72b54f8585ab03588984fb5f8a4853\n"
    },
    {
      "commit": "9ae40e5b5b2bdde89c6a70cc6306997421d44f1a",
      "tree": "cda7b6901f587cab0361e787e2949fc221d45629",
      "parents": [
        "cf8f6d849e76c008d6bf2114a7b2f9d43e7f9a8e"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 09 12:22:58 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 09 12:37:47 2016 +0300"
      },
      "message": "PEP8 fixes\n\nChange-Id: Ib1ebe393e967e7a9cef929e75892f96474f5c2fb\nPartial-Bug: #1575759\n"
    },
    {
      "commit": "cf8f6d849e76c008d6bf2114a7b2f9d43e7f9a8e",
      "tree": "92bded2e160acd891e85b6b52a7e631cbe736b5c",
      "parents": [
        "3b3269ecc0fa1422da4cd9da64e40ac6b208a074"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 09 00:10:07 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 09 12:37:47 2016 +0300"
      },
      "message": "Fixed license header\n\nChange-Id: Ia33b2dcbb1d17f869e795dfb2c2bc3144969fed9\n"
    },
    {
      "commit": "3b3269ecc0fa1422da4cd9da64e40ac6b208a074",
      "tree": "3bd3ed700d0580ec1ceeee0f4bca7502ce0a3797",
      "parents": [
        "7a50223fe9c3050b32745623b8cedb98d3398419"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Mar 31 15:53:15 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Apr 26 18:22:23 2016 +0300"
      },
      "message": "Refactoring rsync_url according test failures\n\nChange-Id: Ib815c322848024d6b0e945bf250988fe6d776fc5\n"
    },
    {
      "commit": "7a50223fe9c3050b32745623b8cedb98d3398419",
      "tree": "b80f62882f72adc338154b9690e48204bb848580",
      "parents": [
        "4ab72895dff4f647a35015ea5b58cfc573a8b858"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Apr 12 09:37:49 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Apr 26 18:22:23 2016 +0300"
      },
      "message": "Fixes bug on parsing mirror_name parameter\n\nChange-Id: I2fd9fa6f96a2cc5f3b219863eaf7b04e7ef362db\n"
    },
    {
      "commit": "4ab72895dff4f647a35015ea5b58cfc573a8b858",
      "tree": "db8a70b61aae0f2a22e53a11e9b05cf12045ee5d",
      "parents": [
        "4997bc0314bef37d812a3b78f4e93a7425fdc638"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Apr 26 18:01:24 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Apr 26 18:01:24 2016 +0300"
      },
      "message": "Added py27 env to tox.ini\n\nChange-Id: I8180ce9d652d9be4be883efb936fcc69532dd498\nRelated-Bug: #1569334\n"
    },
    {
      "commit": "4997bc0314bef37d812a3b78f4e93a7425fdc638",
      "tree": "8a72f8c0d160f1c7eab5b16acac2d44106db570a",
      "parents": [
        "6f55d7e1d5084e5073a8c964a025cf171c062294"
      ],
      "author": {
        "name": "Alexey Golubev",
        "email": "agolubev@mirantis.com",
        "time": "Thu Mar 31 15:33:01 2016 +0300"
      },
      "committer": {
        "name": "Alexey Golubev",
        "email": "agolubev@mirantis.com",
        "time": "Thu Apr 07 13:38:09 2016 +0300"
      },
      "message": "Fixed a bug in CLI\n\nChanges in cli.py. Code refactored in accordance with\nOpenStack Style Guidelines.\n\nChange-Id: I55d3ed4ecb061fbc4aad2ba26ee959ac9946a5ad\n"
    },
    {
      "commit": "6f55d7e1d5084e5073a8c964a025cf171c062294",
      "tree": "e7fd0d890a3c0c9d373bb7cf865f31aa0e706a20",
      "parents": [
        "8a07116c197aa858d2a6452470decce1d67cee8e"
      ],
      "author": {
        "name": "Alexey Golubev",
        "email": "agolubev@mirantis.com",
        "time": "Wed Mar 23 16:16:29 2016 +0300"
      },
      "committer": {
        "name": "Alexey Golubev",
        "email": "agolubev@mirantis.com",
        "time": "Wed Mar 30 13:35:09 2016 +0300"
      },
      "message": "Added CLI interface to trsync\n\nAdded an interface based on cliff to call push/remove commands.\n\nChange-Id: Ic308974da577386c975a96fb1edb259175601680\n"
    },
    {
      "commit": "8a07116c197aa858d2a6452470decce1d67cee8e",
      "tree": "d379212802723e328315894b790bb86e8e872d7e",
      "parents": [
        "ea341ec919dbfa321525c30f3629603814175e21"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Feb 24 11:55:00 2016 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Mar 16 20:38:29 2016 +0300"
      },
      "message": "trsync code refactored to meet the openstack standart\n\n* Added Openstack template files\n* utils and rsync_url and same tests moved to objects, utils and tests\n* shell and tempfiles moved to trsync.utils module\n* rsync_remote moved to trsync.objects module\n* trsync.py renamed as trsync.objects.rsync_mirror module\n* trsync_push.py and trsync_delete.py moved to trsync.cmd module\n\nChange-Id: Ifd722c8f867832f888a1bacef5744fb56fc2ef1a\n"
    },
    {
      "commit": "ea341ec919dbfa321525c30f3629603814175e21",
      "tree": "ce93f1d0878a37ba2c0f3c89ef4db067b653ae74",
      "parents": [
        "1afea094ab74102de4128a4797a3736009f57c0a"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Nov 11 07:54:04 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Nov 11 16:56:22 2015 +0300"
      },
      "message": "Implemented trsync_remove.py\n\nChange-Id: Ifa920c9443a5ffdf98ba198bed9ec2bb0bb38fea\n"
    },
    {
      "commit": "1afea094ab74102de4128a4797a3736009f57c0a",
      "tree": "5d80df71b8e2392d1f5ad05708bad20bf9b771e2",
      "parents": [
        "9cf2b084399146f0de208f96f4508a9fbd7367e9"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Oct 07 15:23:43 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Sat Nov 07 00:15:09 2015 +0300"
      },
      "message": "Implementes CLI tool trsync_push.py\n\nChange-Id: I969c9c228fa501999cce3b0b21a506819f795e4c\n"
    },
    {
      "commit": "9cf2b084399146f0de208f96f4508a9fbd7367e9",
      "tree": "8641f2590b4b7915af031e016e51580b25ea3b89",
      "parents": [
        "74c5d3b75d78786e3dd3e663c6d20788b72d5cb0"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Nov 06 17:04:12 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Nov 06 17:07:30 2015 +0300"
      },
      "message": "Implemented deletion of groups of FS objects as single rsync operation\n\nCleaning of old snapshots uses this feature\n\nChange-Id: Iae2acc1cedf880bdb4f055e04ebc2879d3ef42e5\nPartial-Bug: #1513764\n"
    },
    {
      "commit": "74c5d3b75d78786e3dd3e663c6d20788b72d5cb0",
      "tree": "7c53bce5e7deadbeff44109965157d52b443da72",
      "parents": [
        "78e164e7ca6d62cae359170d6406c53e7cb71f96"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Nov 06 12:45:28 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Nov 06 17:07:30 2015 +0300"
      },
      "message": "Fixed init_directory_structure for destination on local FS\n\nChange-Id: I9e7312a73eb68974fb5ad6b4912fa3c308a1c37d\n"
    },
    {
      "commit": "78e164e7ca6d62cae359170d6406c53e7cb71f96",
      "tree": "7f6455f51b20fcc6743181f4480a512551729110",
      "parents": [
        "4fe9bb4780a7feb70acbf4a01ebade31b12ac6f3"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Oct 14 19:01:39 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Sun Oct 18 01:10:57 2015 +0300"
      },
      "message": "Fix deletion of old snapshots\n\nChange-Id: If6368f813e23b504d30a5ac7036b86e66c5d1be7\n"
    },
    {
      "commit": "4fe9bb4780a7feb70acbf4a01ebade31b12ac6f3",
      "tree": "62c8406804652d30615933c19323ed09604a2a30",
      "parents": [
        "3eb1198999f06a34fba10c89740dabd12d87230f"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Sep 01 09:04:06 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Sep 01 09:04:54 2015 +0300"
      },
      "message": "Implemented possibility of specify custom rsync_extra_params to TRsync class\n\nChange-Id: I38493b44f757476ef26cd480056992f5bb9a8c3e\n"
    },
    {
      "commit": "3eb1198999f06a34fba10c89740dabd12d87230f",
      "tree": "56be043a87d3cc4f881d3aa5d77bbfa47a7f52ca",
      "parents": [
        "69c29266baebb0f6dcc6cbc4249961e9c5514fc1"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jul 16 19:45:17 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jul 16 20:09:50 2015 +0300"
      },
      "message": "TimeStamp moved to utils module\n\nChange-Id: Ibed7bb178f602203cb71f1a9fe206a3894ec3c96\n"
    },
    {
      "commit": "69c29266baebb0f6dcc6cbc4249961e9c5514fc1",
      "tree": "6bfad41072e04735b344f06da68afe1359f3b559",
      "parents": [
        "eb72c93f37b6f98c9505d55b6f4e3d8749379696"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jul 16 19:22:16 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jul 16 19:22:16 2015 +0300"
      },
      "message": "Fixed constructing of path on push\n\nChange-Id: I73b778a2d19342581dc4c07436e4d97a66b0f31a\n"
    },
    {
      "commit": "eb72c93f37b6f98c9505d55b6f4e3d8749379696",
      "tree": "034aacedfb46863e206b42eae1febf07dbccc262",
      "parents": [
        "9d82e20341dbbb8c08c500131ad0db551af09a0d"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jul 13 21:25:34 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jul 16 19:19:47 2015 +0300"
      },
      "message": "Implemented storing of history for symlinks on remote host\n\nChange-Id: I974124c8d77b84aa2f02174d50e3b810285a845d\n"
    },
    {
      "commit": "9d82e20341dbbb8c08c500131ad0db551af09a0d",
      "tree": "4b12c2c544bc0dbb8b8638ed7d12658e714795ea",
      "parents": [
        "32798e3e0a5f53406ec5647b6d7e12bd184152a8"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jul 13 21:03:32 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jul 13 21:03:32 2015 +0300"
      },
      "message": "Implemented _rsync_pull method\n\nChange-Id: If52f8ae268e95e1d05e3d9a9a835534aa9447937\n"
    },
    {
      "commit": "32798e3e0a5f53406ec5647b6d7e12bd184152a8",
      "tree": "7712e289b538fa3e7e7240816e37b0d638ca4b44",
      "parents": [
        "6d7b5c8801fe8709e9ca01ec3478a90e2ee15039"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jul 13 21:02:04 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jul 13 21:02:04 2015 +0300"
      },
      "message": "_do_rsync renamed to _rsync_push\n\nChange-Id: I56ed142197970f5ec9e965a447a5f7af1e0148c8\n"
    },
    {
      "commit": "6d7b5c8801fe8709e9ca01ec3478a90e2ee15039",
      "tree": "c38825b58e454a81208b8e5b837c9e197ac19683",
      "parents": [
        "052e9115a5514439fd901c555fad6c953a44b1c7"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jul 13 13:31:58 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jul 13 13:31:58 2015 +0300"
      },
      "message": "Updated todoes\n\nChange-Id: I43707d38f31791ac770b09c277fd99bf4a74c8fc\n"
    },
    {
      "commit": "052e9115a5514439fd901c555fad6c953a44b1c7",
      "tree": "25ef28cc06d847d33f0d38aa51b9e405f1f8c02c",
      "parents": [
        "501cea5e7c1527f5ca2b62c0085b5225d47c8be8"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 29 18:43:15 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 29 18:43:15 2015 +0300"
      },
      "message": "Added deletion of snapshot\u0027s metadata files during clean of old snapshots\n\nChange-Id: Id51bcbd6eb0080e2f93259e774f4d9c8df999f50\n"
    },
    {
      "commit": "501cea5e7c1527f5ca2b62c0085b5225d47c8be8",
      "tree": "e5727cc2747570d957cbeaab354db15452b7b4b7",
      "parents": [
        "dc8df00a09062656dabbd7d8264b30e4f754a2c3"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 29 18:11:25 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 29 18:34:47 2015 +0300"
      },
      "message": "Implemented creating of snapshot.diff for every snapshot\n\nChange-Id: Id4e7d1f6533d84103bdc48cf4798b9b50733d7f5\n"
    },
    {
      "commit": "dc8df00a09062656dabbd7d8264b30e4f754a2c3",
      "tree": "62bc7fe4b9e57d90b64f86698dbd05924fbd64fc",
      "parents": [
        "96bb0297db58a122efa6ba7325fc2ead435364ac"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 25 19:37:41 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 29 17:32:10 2015 +0300"
      },
      "message": "Improved transaction implementation and implemented creating of additional symlinks during trsync\n\nChange-Id: I203ab33d50ad85a68d727dc17f55ccbbe160f194\n"
    },
    {
      "commit": "96bb0297db58a122efa6ba7325fc2ead435364ac",
      "tree": "85e268279c079f3517fc43b8f42f81c7d1bf47b7",
      "parents": [
        "20643b4627ba18e61b83f3335d2fe3c70aed0e18"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 23 15:22:05 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 29 17:32:04 2015 +0300"
      },
      "message": "Implemented creating of target files during creating symlinks\n\nChange-Id: Ibeecbcf9210dcec219478dba3f5dadc901e4e99c\n"
    },
    {
      "commit": "20643b4627ba18e61b83f3335d2fe3c70aed0e18",
      "tree": "66f70b4bd85a55b8501511a24aff61af22f33a53",
      "parents": [
        "0d444f8cbe625afb49da70a16ec7fbde846a89e5"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 22 20:36:48 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 23 15:38:34 2015 +0300"
      },
      "message": "Implemented rsync_remote.symlink_target()\n\nChange-Id: Id99d1086b8439605a47616bc887178467c1342c4\n"
    },
    {
      "commit": "0d444f8cbe625afb49da70a16ec7fbde846a89e5",
      "tree": "865c6f058877f6b057926297936501ec4a3882af",
      "parents": [
        "d77a5e68b7666a8c2bff6229470e791e2df1417e"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 22 19:24:03 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Mon Jun 22 19:25:40 2015 +0300"
      },
      "message": "Disabled update of root symlink\n\nChange-Id: I7c4fbc4aa6b90abc27aa62b56f23668fce7bd0ea\n"
    },
    {
      "commit": "d77a5e68b7666a8c2bff6229470e791e2df1417e",
      "tree": "066ab694f4bbec972ab1f80889278e82bbebfb88",
      "parents": [
        "d5346ee990a0f96f0e5dccb6d5ab522ab81a003e"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Jun 19 17:47:30 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Jun 19 17:49:23 2015 +0300"
      },
      "message": "Singleton hacked for support reinit method for instance\n\nChange-Id: Iea72dc29af8a560005e6f798f33b486d5651fb12\n"
    },
    {
      "commit": "d5346ee990a0f96f0e5dccb6d5ab522ab81a003e",
      "tree": "cc24932be183951abd29bc9fa649d4379e4614eb",
      "parents": [
        "83e10a5ebcd3e06fe6818085cdfc063a4da80d40"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 15:43:38 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 15:45:06 2015 +0300"
      },
      "message": "TODO about symlink target info\n\nChange-Id: Ic96936e223dc952b52bf5da884df2d26edba67a8\n"
    },
    {
      "commit": "83e10a5ebcd3e06fe6818085cdfc063a4da80d40",
      "tree": "0228531fdf07754fb7a4e96f7467eed9cbf3f04e",
      "parents": [
        "b1b5083597e47bc38074954e4942cd1c997f19d9"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 14:08:12 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 14:08:12 2015 +0300"
      },
      "message": "Implemented possibility of specify timestamp by hand\n\nChange-Id: I3773b70429c73dcd27958810c3fdc3e14a6dc7ca\n"
    },
    {
      "commit": "b1b5083597e47bc38074954e4942cd1c997f19d9",
      "tree": "7a7744cf5e4f1516a15e1eca8d13e0f6cbf2fa02",
      "parents": [
        "ad1518a84fe332a2ee972b12e5eabd97e32d9b8e"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 11:24:53 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "Added some TODOs\n\nChange-Id: I74df33b80d7c555b5572e41e4203ffcb6571a84d\n"
    },
    {
      "commit": "ad1518a84fe332a2ee972b12e5eabd97e32d9b8e",
      "tree": "ba522807e3d5a317a110a6d2df0ef385e667a010",
      "parents": [
        "3e83758d19973a825be63eb074ab8f2945ec081c"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 11:24:16 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "Minor fixes for trsync\n\nChange-Id: Ib52fcd231076f913c21b1f9b5aaa89664aff02a3\n"
    },
    {
      "commit": "3e83758d19973a825be63eb074ab8f2945ec081c",
      "tree": "406ce370752cbf1a16703e50c7388da42688a73c",
      "parents": [
        "a59118550e2d866c7361583f4080432d77185436"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 17 18:44:15 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "New name - trsync - transactional rsync\n\nChange-Id: I41df13b418c6d5602a5d0008fb9d47288c399ab4\n"
    },
    {
      "commit": "a59118550e2d866c7361583f4080432d77185436",
      "tree": "4a40e7a71032e1a6fd016391a00a231cd4a659aa",
      "parents": [
        "17f4a6ca125c48ec40c8c8a0ae6e26b9ea3c9d27"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 17 18:29:58 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "Implemented transaction based rsync for single remote server\n\nChange-Id: I0658e11be22dd3fd950ff3e8935dd95541e1ebd0\n"
    },
    {
      "commit": "17f4a6ca125c48ec40c8c8a0ae6e26b9ea3c9d27",
      "tree": "797a195da67538af3c9302131b3b47807b93acf4",
      "parents": [
        "452138bb2b42c3bbd3c24a4c981d0db5fdaef904"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 17 02:40:59 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "Fixed call of self.symlink()\n\nChange-Id: Iaccae212cb4244d80df4a51a440414ff208f46be\n"
    },
    {
      "commit": "452138bb2b42c3bbd3c24a4c981d0db5fdaef904",
      "tree": "6e5358e5e38049decdc5d1e21cb37b4a24b28180",
      "parents": [
        "97e0143ae085371411d68c6aac3d5fb8a930d561"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 17 02:37:34 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "Implemented removing of old snapshots\n\nChange-Id: Idb21c55de8e33752fd17e960ea096c97e058e2bd\n"
    },
    {
      "commit": "97e0143ae085371411d68c6aac3d5fb8a930d561",
      "tree": "b8c7b367cd3bf6441bde825a0d8e68dd685b4e8d",
      "parents": [
        "01271629151cf65f89077e034736bc3b1971fd97"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 17 02:36:43 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "Unneeded mirror_name property removed\n\nChange-Id: I1f898d160955c8c8344f95643903c40aa58a8f6f\n"
    },
    {
      "commit": "01271629151cf65f89077e034736bc3b1971fd97",
      "tree": "5e2167742f2120103f5155f4bfad275dfceeecd2",
      "parents": [
        "a9f897359eaaa68cb4a090e0dc9bae12a75429a5"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 17 02:35:09 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "Implemented initialization of directory structure on versioned remote\n\nChange-Id: Iff305bcd521ff11aaf28b40b273f1276c72742d6\n"
    },
    {
      "commit": "a9f897359eaaa68cb4a090e0dc9bae12a75429a5",
      "tree": "b026193404539bec02fc80b029f67e98b742f302",
      "parents": [
        "d1200f3c397b0b02431b32c9e592c4f27704e22a"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 17 01:25:23 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "rsync_remote.push and rsync_versioned.push has equal interfaces\n\nChange-Id: I1d42255a3741a62343de215d9842c8eebcff156f\n"
    },
    {
      "commit": "d1200f3c397b0b02431b32c9e592c4f27704e22a",
      "tree": "41ed0869dff284f7e3b2cf1004e28deb497282a6",
      "parents": [
        "7292969b5c643a6fa9318ab908aee5958bd93cd8"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 17 01:00:09 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "rsync_url fixed for tests\n\nChange-Id: I5a27ba3ea874b86b1c8478b0dbe5f6fa78d103d4\n"
    },
    {
      "commit": "7292969b5c643a6fa9318ab908aee5958bd93cd8",
      "tree": "adb9b6a4ec9a0fc9adc0d8c35855ab5da4481053",
      "parents": [
        "ccaf041e3b9fd8ca999089945b1833fc7872148f"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 16 17:39:07 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "tests for rsync_url fixed and updated\n\nChange-Id: I4edbc9d2d06fe60c97cf64f035e0daefe508899d\n"
    },
    {
      "commit": "ccaf041e3b9fd8ca999089945b1833fc7872148f",
      "tree": "23d2eb83101c0e1a942087beec7517b4acdc5f42",
      "parents": [
        "be9a277880a1f98513cad92f7278c8842a58c5eb"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 16 17:34:07 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "fix creating of ~ subdirectory on tempfiles.py\n\nChange-Id: If2eb44242825ae73dbdfb5d550fdf6ac867a8976\n"
    },
    {
      "commit": "be9a277880a1f98513cad92f7278c8842a58c5eb",
      "tree": "1d55330d90e08a6c43bd79cc0cfe54159a75abc0",
      "parents": [
        "46cc073a7598699b6896df992b64383c625f415f"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Jun 05 20:15:11 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "url_in and url_is renamed to url_dir and url_file\n\nChange-Id: Ida034859d06cc649d6658ef14ebfecc80586b439\n"
    },
    {
      "commit": "46cc073a7598699b6896df992b64383c625f415f",
      "tree": "fc16bd13aa4c7f025f0823c3bb2e71a7eb45be3e",
      "parents": [
        "c9a06e9f8a4135220cfd99195923f7c3042837e4"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Jun 05 19:23:24 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "dirname and filename renamed to a_dir and a_file\n\nChange-Id: I00f17985e6730290d76e56cb30d51bfc9b5dbfad\n"
    },
    {
      "commit": "c9a06e9f8a4135220cfd99195923f7c3042837e4",
      "tree": "f0a8607d8ea3e94b253a08968196ad6712f1efe3",
      "parents": [
        "84dd867c2aece89285de96dd2791d3e5c599fc35"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Jun 05 17:57:11 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "Added some tests, checked ssh tests\n\nChange-Id: I14603abbc7d14cbcb9d749900bf594046d2f2ec9\n"
    },
    {
      "commit": "84dd867c2aece89285de96dd2791d3e5c599fc35",
      "tree": "d331d5622604fdf19b07ed1e3b58ad30f29dbb4d",
      "parents": [
        "854399eecee1bce4224b897017c802094d48f347"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Jun 05 17:52:43 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:59 2015 +0300"
      },
      "message": "Improved logging for test_rsync_url\n\nChange-Id: I29f8b1cee5a0b4bc8f3ce5d69669880ddd46c4a4\n"
    },
    {
      "commit": "854399eecee1bce4224b897017c802094d48f347",
      "tree": "9679d4b8f3492d5622c6410b0ae4f0cdb69576eb",
      "parents": [
        "d3f57d8d7f92077bb68450b83c849f6b7a961fc4"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Jun 05 16:35:17 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Fixed --link-dest evaluation\n\nChange-Id: I89e7c8376301781cfd9a62ff7eba027dfa269570\n"
    },
    {
      "commit": "d3f57d8d7f92077bb68450b83c849f6b7a961fc4",
      "tree": "3a679d6daaf372607cb15a8a7352b9554f335118",
      "parents": [
        "26787dfa848fab647ef810db903b41f2ab0af5a7"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Jun 05 15:56:53 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "self.root renamed to self.url\n\nChange-Id: I7b59b4b6490bea76038ba55d571f9f9a9ae43fa5\n"
    },
    {
      "commit": "26787dfa848fab647ef810db903b41f2ab0af5a7",
      "tree": "637184318b6eec6eed35d7ab7fd34fb7ed821034",
      "parents": [
        "55e1bbc077067593b2d70a4bdc0ea41efd8be543"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Jun 05 14:47:27 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "First implementation of rsync_versioned\n\nChange-Id: I2f5c5a24aaa384932a298a23fbe72e33fb1d5e3b\n"
    },
    {
      "commit": "55e1bbc077067593b2d70a4bdc0ea41efd8be543",
      "tree": "aec8715df331f882d0d48d36b1ca40fe4c2b13e8",
      "parents": [
        "8608943c286e94de1f807dadb3df51a27d579a4d"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri Jun 05 03:29:29 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Implemented class singleton\n\nChange-Id: Iaff1c1b95ad9f99b9a3730f9f4e9436127361885\n"
    },
    {
      "commit": "8608943c286e94de1f807dadb3df51a27d579a4d",
      "tree": "00e47c879817bb3074d919784a83fabaf518e1e8",
      "parents": [
        "b58958b5175aa8937b3035879e376904485cd172"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 04 22:07:20 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "First implementation of rsync_remote\n\nChange-Id: If8ca134df825d759bb8ecf37ff86e4854c995ee7\n"
    },
    {
      "commit": "b58958b5175aa8937b3035879e376904485cd172",
      "tree": "8db716215280f7808198390cb88228f8f741ec35",
      "parents": [
        "6733144f5816475bcd015ee29e3873874585c17c"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 04 22:08:01 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Removed rsync_client.py\n\nChange-Id: Ibf2347b92f62e0132450bb3fd339294e6635c0cf\n"
    },
    {
      "commit": "6733144f5816475bcd015ee29e3873874585c17c",
      "tree": "27a2ee873d7bc19f95929d75b75a43e25b12dab2",
      "parents": [
        "4e1f31106212c1d55b0f860c34a92a0b85697a14"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 04 21:56:54 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Implemented shell.py\n\nChange-Id: Iee7820f91007ba08000d31774f81b25281a8acaa\n"
    },
    {
      "commit": "4e1f31106212c1d55b0f860c34a92a0b85697a14",
      "tree": "d125c935ce6d85e6add0edd0a6b617f81e80f498",
      "parents": [
        "4405d166dcc4a006275f6435cd549bb1b7b11f78"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 04 21:22:42 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Implemented tempfiles (empty_dir, symlink etc)\n\nChange-Id: I9cd8a4143741a21bd43ed9edd1cb2589ecad9cf2\n"
    },
    {
      "commit": "4405d166dcc4a006275f6435cd549bb1b7b11f78",
      "tree": "a7d1f0cc6259690ace5c1d88cfee541f8d499ef5",
      "parents": [
        "ba34b1452d9405926411cac81fc9a6529c1d07ae"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 04 21:11:32 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Removed unused code\n\nChange-Id: Ib15470432563bbdd89f4bbcd94c9af08aaddece7\n"
    },
    {
      "commit": "ba34b1452d9405926411cac81fc9a6529c1d07ae",
      "tree": "7fe81120bb32b7a938a3c73346a5c9080bacf548",
      "parents": [
        "a021f57e25aceda35ea9e018a0fb89ba2e97a259"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 04 17:12:27 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Implemented _fn_join, dirname, filename, urljoin in RsyncUrl and tests\n\nChange-Id: I0259b10ae6c0495dfc80491902bd390277d1f619\n"
    },
    {
      "commit": "a021f57e25aceda35ea9e018a0fb89ba2e97a259",
      "tree": "16acb351ba294eb4074648857f3fc3c85453545d",
      "parents": [
        "7ab03e5a07d1499b48fa1af5573cdc76847153de"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 04 15:11:13 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Fixed _url_join when None in parameters\n\nChange-Id: I342f91085ae689c29175bc8d5d4bd357b2408d02\n"
    },
    {
      "commit": "7ab03e5a07d1499b48fa1af5573cdc76847153de",
      "tree": "c211c82ad08221dcead495036c75fce3404b0ca8",
      "parents": [
        "2f93dd2f93be4b6ad44f7b217e70c91297a98c48"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 04 14:32:19 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Removed print\n\nChange-Id: I4584459d4ad418496a08a13f6766a14159a1d16e\n"
    },
    {
      "commit": "2f93dd2f93be4b6ad44f7b217e70c91297a98c48",
      "tree": "b7f78b01ad02bec68ba8d905af896a1b6595b19e",
      "parents": [
        "c018e38d06adf4f145b266747388b9ca8fab231d"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 04 14:20:44 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Implemented url_in, url_is and corresponding tests\n\nChange-Id: I11f8b97715add1590e0d80a7865a1f3511a04750\n"
    },
    {
      "commit": "c018e38d06adf4f145b266747388b9ca8fab231d",
      "tree": "bcbde32fdacd05dbeb77c0fc0a701298fbfc9f2e",
      "parents": [
        "b1b09a6c5f7fe5293c1d50f96cd0fda1944c2e43"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 03 15:22:04 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "added utils (Logged and Retry) and test_utils\n\nChange-Id: Ia0e47636409a82cdd6f1e7af7b16b772d3ce16dd\n"
    },
    {
      "commit": "b1b09a6c5f7fe5293c1d50f96cd0fda1944c2e43",
      "tree": "486f5eb107ce06742d5461cea02666c426b6af7a",
      "parents": [
        "732379bc85d6020eba23b0d85c7aa715a0e04f8d"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 03 15:21:35 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Fixed logging for rsync_url and test_rsync_url\n\nChange-Id: Iab80ab190e7b416a10802e80dc85e452596b8ea6\n"
    },
    {
      "commit": "732379bc85d6020eba23b0d85c7aa715a0e04f8d",
      "tree": "2775feadfec5d06c5251940d70e6f3f260a9c7c2",
      "parents": [
        "64f77bf829c841903a4f1a5b5619d12aefdfa1fc"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 02 17:05:20 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Temporary removed tests for rsync1.host::\n\nChange-Id: I3212672dff9511c1704d3f04b9999cfc6d2d117a\n"
    },
    {
      "commit": "64f77bf829c841903a4f1a5b5619d12aefdfa1fc",
      "tree": "cd098dafd2e383f7c5cf92e27e810c81422808a9",
      "parents": [
        "95e001b49a9841dbe6172fb9b22e64be7b4193d3"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jun 02 15:22:48 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Updated rsync_url and tests\n\nChange-Id: I652a72713ab82661232db20b9643d3340e016af0\n"
    },
    {
      "commit": "95e001b49a9841dbe6172fb9b22e64be7b4193d3",
      "tree": "8ba4ba4e8e044acf1284ce0f78723cd60573c6c3",
      "parents": [
        "a8db7a9181e6b35f9c3321815c78b9d1090cd0bc"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Sat May 30 23:53:22 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Fixed regexps for ssh and path\n\nChange-Id: I836c08d091d453fd9974a638ab5522eb72ef4eb9\n"
    },
    {
      "commit": "a8db7a9181e6b35f9c3321815c78b9d1090cd0bc",
      "tree": "4f7c82fc3aa4984735bbb6d27562fdddec0aecec",
      "parents": [
        "b07aacb9d9c5ded76164edb02b9023d1f89fb209"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Sat May 30 02:23:43 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Implemented initial version of unittests for rsync_url\n\nChange-Id: I3f94529a1ce774dcf94c9a44e573abd633fdd841\n"
    },
    {
      "commit": "b07aacb9d9c5ded76164edb02b9023d1f89fb209",
      "tree": "0a5d79458c8967c16b3fe570d23cb8dad78f692b",
      "parents": [
        "9c69f4ee9f4772be8789d7766e42fee8023ff8dc"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Fri May 29 19:54:52 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Implemented initial version of rsync_url\n\nChange-Id: I64949badffe80113c860f7c5dc0a47ff02a937f1\n"
    },
    {
      "commit": "9c69f4ee9f4772be8789d7766e42fee8023ff8dc",
      "tree": "857d4f982c2b05c51b9a86577bbe4f1767db8af1",
      "parents": [
        "d5b47eb4f4c19415ae38075d3007d2e97daac22d"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu May 28 16:13:27 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Implemented deletion of all old snapshots\n\nChange-Id: I7e595596a130315c044315bd07f820b7ef6c9f85\n"
    },
    {
      "commit": "d5b47eb4f4c19415ae38075d3007d2e97daac22d",
      "tree": "2b80e8d596b1516faa4e1efee4fc5729cbfeb621",
      "parents": [
        "11653abf907ac645503360fcd992e661e296b91f"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed May 27 22:26:54 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Implemented initialization of directory structure on empty server\n\nChange-Id: I8bc5b039fe419821ef902a4d72b5d67321cf4241\n"
    },
    {
      "commit": "11653abf907ac645503360fcd992e661e296b91f",
      "tree": "2d505a6054c5ca15a8c60bf1b0240ac2fd861012",
      "parents": [
        "3fe42712d6eb4ea981710c21b0ca984421b572e7"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jan 15 15:45:16 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "logging instead of printing\n\nChange-Id: I0a7ebc150ed06976c5c8528fd0467c89b78b21f7\n"
    },
    {
      "commit": "3fe42712d6eb4ea981710c21b0ca984421b572e7",
      "tree": "163537729f909cf3ddc4ba75b0799ed513e855fd",
      "parents": [
        "e99d837cd9109bd48e5361207337011ee3df7aee"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jan 15 15:34:22 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Added deletion of snapshots older than save_last_days days\n\nChange-Id: I71bc71b0ac2dd0f6b871eae7b25ecf2860430527\n"
    },
    {
      "commit": "e99d837cd9109bd48e5361207337011ee3df7aee",
      "tree": "11c45709363a3ae6d1b80a5f0d1b8f0888fc63de",
      "parents": [
        "7f3c53cd4ff84452e251f0d01a3c0ab94f5fd173"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Jan 13 20:07:01 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:58 2015 +0300"
      },
      "message": "Added regexp support in rsync_ls*\n\nChange-Id: I71c51518acdc17fa1552a84ac5892c6084cbc0f6\n"
    },
    {
      "commit": "7f3c53cd4ff84452e251f0d01a3c0ab94f5fd173",
      "tree": "1d0f05621c53f00533c161b830c629ca3009590e",
      "parents": [
        "f6d53c77692fcc6bf51416a27374ff5a8d0a5499"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Tue Dec 09 14:19:17 2014 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:57 2015 +0300"
      },
      "message": "Base version of rsync staging class\n\nChange-Id: Id6c02ca3af3671c136785f5f4fbe2f8500918fc6\n"
    },
    {
      "commit": "f6d53c77692fcc6bf51416a27374ff5a8d0a5499",
      "tree": "b0bfa7dc6b90a9cc0553a5cdd8e23167ced13cb9",
      "parents": [
        "e941e7e8281760cbf9b3e54ea2203f0a4d3e13fc"
      ],
      "author": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Wed Jun 17 18:52:45 2015 +0300"
      },
      "committer": {
        "name": "Max Rasskazov",
        "email": "mrasskazov@mirantis.com",
        "time": "Thu Jun 18 13:11:57 2015 +0300"
      },
      "message": "Initial commit\n"
    },
    {
      "commit": "e941e7e8281760cbf9b3e54ea2203f0a4d3e13fc",
      "tree": "58f41b867af12e17651e64f701dbd538541a2964",
      "parents": [],
      "author": {
        "name": "Fuel Infra Jeepyb",
        "email": "anikitin+jeepyb@mirantis.com",
        "time": "Thu Jun 18 10:00:33 2015 +0000"
      },
      "committer": {
        "name": "Fuel Infra Jeepyb",
        "email": "anikitin+jeepyb@mirantis.com",
        "time": "Thu Jun 18 10:00:33 2015 +0000"
      },
      "message": "Added .gitreview\n"
    }
  ]
}
