)]}'
{
  "log": [
    {
      "commit": "5ed0fc31f7f453625df314d8e66b9791e8d13003",
      "tree": "32dcde1224c7c6afd515f87ca9e3187ab38365fd",
      "parents": [
        "651d9d916abc3c3d6a91a12549495caba5edffd2"
      ],
      "author": {
        "name": "Kevin GEORGES",
        "email": "k4georges@gmail.com",
        "time": "Tue Dec 13 10:38:49 2016 +0100"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Tue Dec 13 10:38:49 2016 +0100"
      },
      "message": "Fix MergeInConfig error return\n\nUnsupportedConfigError was returned if config file not found\r\n\r\n* Swap getConfigFile and getConfigType call\r\n* Add a unit test"
    },
    {
      "commit": "651d9d916abc3c3d6a91a12549495caba5edffd2",
      "tree": "6ca55a72a58975de10eda00dfb63dd11848176e7",
      "parents": [
        "80ab6657f9ec7e5761f6603320d3d58dfe6970f6"
      ],
      "author": {
        "name": "Albert Nigmatzianov",
        "email": "albertnigma@gmail.com",
        "time": "Sat Oct 29 23:33:52 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sat Oct 29 23:33:52 2016 +0200"
      },
      "message": "Document case-insensitivity for key taking methods\n\n"
    },
    {
      "commit": "80ab6657f9ec7e5761f6603320d3d58dfe6970f6",
      "tree": "fc4552c4c057130c4ab47f2640f591b8c4e36db4",
      "parents": [
        "285f1510193473600929e1183915f6220fabab94"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Oct 24 17:49:00 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Oct 24 21:20:41 2016 +0200"
      },
      "message": "Copy and insensitivise maps in Set\n\nFixes #261\nCloses #265\n"
    },
    {
      "commit": "285f1510193473600929e1183915f6220fabab94",
      "tree": "07ff3ad4f438b45af6cb19a9479ed6a8baec8508",
      "parents": [
        "50515b700e02658272117a72bd641b6b7f1222e5"
      ],
      "author": {
        "name": "Benoît Masson",
        "email": "benoitmasson@users.noreply.github.com",
        "time": "Sun Oct 23 23:04:21 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sun Oct 23 23:04:21 2016 +0200"
      },
      "message": "Fixed AllKeys() to include env values added with BindEnv()\n\n* Fixed: values bound with BindEnv added to AllKeys()\r\n\r\nCast was not working, and v.env wasn\u0027t used when merging keys.\r\n\r\nRewrote explicit and specific casts for maps storing strings or FlagValues.\r\n\r\n* Added: test for BindEnv() and AllKeys()\r\n\r\nTo make sure AllSettings() and Unmarshal() will consider environment\r\nvariables added with BindEnv().\r\n"
    },
    {
      "commit": "50515b700e02658272117a72bd641b6b7f1222e5",
      "tree": "63ac2e0f7c64e09f449e83031513d0fb7c431e0a",
      "parents": [
        "44208030b391907a5ec5c5658470bdb6e6169073"
      ],
      "author": {
        "name": "Benoît Masson",
        "email": "benoitmasson@users.noreply.github.com",
        "time": "Fri Oct 14 11:24:45 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Fri Oct 14 11:24:45 2016 +0200"
      },
      "message": "Increase performance of nested keys search\n\n* Fixed: insensitiviseMaps and tests\r\n\r\nAll keys (even nested ones) are now lower-cased recursively.\r\n\r\nOn the way, map[interface{}]interface{} are cast to map[string]interface{}\r\n\r\n* Changed: simplified find() fast path and increase performance\r\n\r\nRemoved searchMapForKey(), fast path directly integrated into searchMap() and\r\nsearchMapWithPathPrefixes()\r\n\u003d\u003e more generic (searchMapForKey() wasn\u0027t called everywhere it should have)\r\n\r\nAt the same time, significantly speed up searchMap() and searchMapWithPathPrefixes(),\r\nwhich are still used for nested keys: the assumption that map keys are all\r\nlower-cased allows to perform\r\n    val \u003d m[key]\r\ninstead of\r\n    for k, v :\u003d range m {\r\n      if strings.ToLower(k) \u003d\u003d strings.ToLower(key) {\r\n        val \u003d v\r\n      }\r\n    }\r\n\u003d\u003e i.e., directly access the map instead of enumerate the keys\r\n"
    },
    {
      "commit": "44208030b391907a5ec5c5658470bdb6e6169073",
      "tree": "fd58cf7295af0ad7b493caa60a07407726dbc940",
      "parents": [
        "c14ce6d43cf5e22e2bd44938f3f45a2761c18350"
      ],
      "author": {
        "name": "Jonathan Anderson",
        "email": "jonathan.robert.anderson@gmail.com",
        "time": "Thu Oct 13 09:03:30 2016 -0230"
      },
      "committer": {
        "name": "Max Wolter",
        "email": "max.wolter.lu@gmail.com",
        "time": "Thu Oct 13 13:33:30 2016 +0200"
      },
      "message": "Allow errors to propagate from getConfigFile(). (#161)\n\n- propagate ConfigFileNotFoundError instead of using unsupported config type error when config file is not found"
    },
    {
      "commit": "c14ce6d43cf5e22e2bd44938f3f45a2761c18350",
      "tree": "a9f7cf9958da4e09cf1f71f5eec5cc042555a589",
      "parents": [
        "51f23d1f1c56a7773ae8f2cfd038f7996ecc9ac2"
      ],
      "author": {
        "name": "Nils Landt",
        "email": "github@promisedlandt.de",
        "time": "Wed Oct 12 11:40:13 2016 +0200"
      },
      "committer": {
        "name": "Max Wolter",
        "email": "max.wolter.lu@gmail.com",
        "time": "Wed Oct 12 11:40:13 2016 +0200"
      },
      "message": "Correct FlagValue interface examples in Readme (#254)\n\n`IsChanged` is actually named `HasChanged`, and the examples were missing function return declarations, so you couldn\u0027t just copy/paste it."
    },
    {
      "commit": "51f23d1f1c56a7773ae8f2cfd038f7996ecc9ac2",
      "tree": "13ebb7e5e735126440660e0e341c4edb8268a578",
      "parents": [
        "54b81535af6c3bceed4672011ef221de7104bbd6"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Oct 10 13:40:38 2016 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 10 13:40:38 2016 +0200"
      },
      "message": "Restore performance for the simple case\n\n```\r\nBenchmarkGetBool-4            1021          481           -52.89%\r\nBenchmarkGet-4                879           403           -54.15%\r\nBenchmarkGetBoolFromMap-4     6.56          6.40          -2.44%\r\n\r\nbenchmark                     old allocs     new allocs     delta\r\nBenchmarkGetBool-4            6              4              -33.33%\r\nBenchmarkGet-4                6              4              -33.33%\r\nBenchmarkGetBoolFromMap-4     0              0              +0.00%\r\n\r\nbenchmark                     old bytes     new bytes     delta\r\nBenchmarkGetBool-4            113           49            -56.64%\r\nBenchmarkGet-4                112           48            -57.14%\r\nBenchmarkGetBoolFromMap-4     0             0             +0.00%\r\n```\r\n\r\nFixes #249\r\nFixes https://github.com/spf13/hugo/issues/2536"
    },
    {
      "commit": "54b81535af6c3bceed4672011ef221de7104bbd6",
      "tree": "7b600ebba70ed58a4105e3c8bca7c96801c17f9e",
      "parents": [
        "21ea37b67349cb6594eea6eaf765b2a7b96f03e2"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Oct 10 11:47:23 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Oct 10 11:47:45 2016 +0200"
      },
      "message": "Add BenchmarkGet\n"
    },
    {
      "commit": "21ea37b67349cb6594eea6eaf765b2a7b96f03e2",
      "tree": "6f6af0420a578324c158cc68510ca821c651369c",
      "parents": [
        "b61deff9070db474aa7668f55bf6eec00008409e"
      ],
      "author": {
        "name": "Albert",
        "email": "albertnigma@gmail.com",
        "time": "Sun Oct 09 21:34:00 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sun Oct 09 21:34:00 2016 +0200"
      },
      "message": "Fix space between Go projects and badges\n\n"
    },
    {
      "commit": "b61deff9070db474aa7668f55bf6eec00008409e",
      "tree": "ddc4dd648c3579744600d82af239ccf3a46add3a",
      "parents": [
        "ec4eb2fa8549869ae7a2accd4fcc83d1c0555c15"
      ],
      "author": {
        "name": "Albert",
        "email": "albertnigma@gmail.com",
        "time": "Sun Oct 09 20:33:40 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sun Oct 09 20:33:40 2016 +0200"
      },
      "message": "Add GoDoc badge\n\n"
    },
    {
      "commit": "ec4eb2fa8549869ae7a2accd4fcc83d1c0555c15",
      "tree": "86df32cae6100ecf1a368266fbe9bac061b9435f",
      "parents": [
        "670c42a85b2a2215949acd943cb8f11add317e3f"
      ],
      "author": {
        "name": "Benoît Masson",
        "email": "benoitmasson@users.noreply.github.com",
        "time": "Sat Oct 08 10:00:18 2016 +0200"
      },
      "committer": {
        "name": "Max Wolter",
        "email": "max.wolter.lu@gmail.com",
        "time": "Sat Oct 08 10:00:18 2016 +0200"
      },
      "message": "Nested maps (#195)\n\nFixes #71, #93, #158, #168, #209, #141, #160, #162, #190\r\n\r\n* Fixed: indentation in comment\r\n* Fixed: Get() returns nil when nested element not found\r\n* Fixed: insensitiviseMaps() made recursive so that nested keys are lowercased\r\n* Fixed: order of expected\u003c\u003d\u003eactual in assert.Equal() statements\r\n* Fixed: find() looks into \"overrides\" first\r\n* Fixed: TestBindPFlags() to use a new Viper instance\r\n* Fixed: removed extra aliases from display in Debug()\r\n* Added: test for checking precedence of dot-containing keys.\r\n* Fixed: Set() and SetDefault() insert nested values\r\n* Added: tests for overriding nested values\r\n* Changed: AllKeys() includes all keys / AllSettings() includes overridden nested values\r\n* Added: test for shadowed nested key\r\n* Fixed: properties parsing generates nested maps\r\n* Fixed: Get() and IsSet() work correctly on nested values\r\n* Changed: modifier README.md to reflect changes"
    },
    {
      "commit": "670c42a85b2a2215949acd943cb8f11add317e3f",
      "tree": "36c55e15d4233f9dabc9e1e9b43921a2932e4f8f",
      "parents": [
        "382f87b929b84ce13e9c8a375a4b217f224e6c65"
      ],
      "author": {
        "name": "Cameron Moore",
        "email": "moorereason@gmail.com",
        "time": "Wed Oct 05 18:22:39 2016 -0500"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Thu Oct 06 01:22:39 2016 +0200"
      },
      "message": "Check for nil in viper.Sub\n\nFixes #191"
    },
    {
      "commit": "382f87b929b84ce13e9c8a375a4b217f224e6c65",
      "tree": "4ed0842675374729f0e8e77a89aaaa72dbe090a8",
      "parents": [
        "438cc0d5c8791cdfc48adf605914f57c9bb0c29e"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Sep 26 17:04:02 2016 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 26 17:04:02 2016 +0200"
      },
      "message": "Remove expensive TRACE logging\n\nAlso avoid doing a strings.Split in the Get common case.\r\n\r\nAny TRACE statements in these hot paths must be totally turned off when not testing.\r\n\r\n```\r\nbenchmark                     old ns/op     new ns/op     delta\r\nBenchmarkGetBool-4            4090          409           -90.00%\r\nBenchmarkGetBoolFromMap-4     6.33          6.28          -0.79%\r\n\r\nbenchmark                     old allocs     new allocs     delta\r\nBenchmarkGetBool-4            6              3              -50.00%\r\nBenchmarkGetBoolFromMap-4     0              0              +0.00%\r\n\r\nbenchmark                     old bytes     new bytes     delta\r\nBenchmarkGetBool-4            129           33            -74.42%\r\nBenchmarkGetBoolFromMap-4     0             0             +0.00%\r\n```\r\n\r\nFixes #242"
    },
    {
      "commit": "438cc0d5c8791cdfc48adf605914f57c9bb0c29e",
      "tree": "606c57d8f96bb660d21048e8a31be68b2f27ca7c",
      "parents": [
        "e26d6aedc15334f7c2bca88e37037f717659d9b8"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Sep 26 10:02:50 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Sep 26 10:07:35 2016 +0200"
      },
      "message": "Add benchmark for GetBool\n\n```\nBenchmarkGetBool-4                100000         12952 ns/op         225 B/op          10 allocs/op\nBenchmarkGetBoolFromMap-4       100000000            10.8 ns/op           0 B/op           0 allocs/op\n```\n"
    },
    {
      "commit": "e26d6aedc15334f7c2bca88e37037f717659d9b8",
      "tree": "1dc8da18a05f6fce57524e27d6b65f0c0f497358",
      "parents": [
        "ed0a9674c6ef3646e218d8bb70708d250e94354b"
      ],
      "author": {
        "name": "Yauhen Lazurkin",
        "email": "foryauhen@gmail.com",
        "time": "Sat Sep 24 02:20:44 2016 +0300"
      },
      "committer": {
        "name": "Max Wolter",
        "email": "max.wolter.lu@gmail.com",
        "time": "Sat Sep 24 01:20:44 2016 +0200"
      },
      "message": "Support time.Duration in viper.Unmarshal (#205)\n\n* Fixes #105 "
    },
    {
      "commit": "ed0a9674c6ef3646e218d8bb70708d250e94354b",
      "tree": "fd621d4851b77d0e390e5a91a15c344b81423f12",
      "parents": [
        "a78f70b5b977efe08e313a9e2341c3f5457abdaf"
      ],
      "author": {
        "name": "Cameron Moore",
        "email": "moorereason@gmail.com",
        "time": "Thu Sep 22 13:19:24 2016 -0500"
      },
      "committer": {
        "name": "Max Wolter",
        "email": "max.wolter.lu@gmail.com",
        "time": "Thu Sep 22 20:19:24 2016 +0200"
      },
      "message": "Fix retrieval of pflag stringSlice (#240)\n\nFixes #112\r\nChanges some logging directives to use Printf"
    },
    {
      "commit": "a78f70b5b977efe08e313a9e2341c3f5457abdaf",
      "tree": "400168e08f97ce7cf8c02c50c317e04f39cc7be6",
      "parents": [
        "2f6a41490bc86fa9a8fb2fc03526a5795e904a17"
      ],
      "author": {
        "name": "Albert",
        "email": "albertnigma@gmail.com",
        "time": "Tue Sep 20 10:17:41 2016 +0200"
      },
      "committer": {
        "name": "Max Wolter",
        "email": "max.wolter.lu@gmail.com",
        "time": "Tue Sep 20 10:17:41 2016 +0200"
      },
      "message": "Small refactorings (#230)\n\n* Fix typo in description of UnmarshalExact\r\n* Omit 2nd values from range loops\r\n* Delete findCWD method from util (was unused)\r\n* Edit documentation according to golint\r\n* Fix documentation in util\r\n* Use RemoteProvider interface instead of defaultRemoteProvider\r\n* Fix err variable in BindFlagValues"
    },
    {
      "commit": "2f6a41490bc86fa9a8fb2fc03526a5795e904a17",
      "tree": "f85edbb45b893171a1e90b92022b4d7637b15c67",
      "parents": [
        "16990631d4aa7e38f73dbbbf37fa13e67c648531"
      ],
      "author": {
        "name": "Max Wolter",
        "email": "max.wolter@etixgroup.com",
        "time": "Mon Sep 19 19:37:56 2016 +0200"
      },
      "committer": {
        "name": "Max Wolter",
        "email": "max.wolter@etixgroup.com",
        "time": "Mon Sep 19 19:37:56 2016 +0200"
      },
      "message": "Prevent shadowning of keys when a nested key\u0027s value is nil.\n"
    },
    {
      "commit": "16990631d4aa7e38f73dbbbf37fa13e67c648531",
      "tree": "6d76a34a385c9b95d8c274eb059188f808926926",
      "parents": [
        "7fb2782df3d83e0036cc89f461ed0422628776f4"
      ],
      "author": {
        "name": "Albert",
        "email": "albertnigma@gmail.com",
        "time": "Tue Aug 30 19:32:46 2016 +0500"
      },
      "committer": {
        "name": "Max Wolter",
        "email": "max.wolter.lu@gmail.com",
        "time": "Tue Aug 30 16:32:46 2016 +0200"
      },
      "message": "Fix typo in README (#227)\n\nFixed typo \u0026 superfluous white space in README"
    },
    {
      "commit": "7fb2782df3d83e0036cc89f461ed0422628776f4",
      "tree": "c9d4eea753d54496d48d038880cf835a40b74b77",
      "parents": [
        "fe9c8b59e176537a2a08498fe6a5e131a3b6a304"
      ],
      "author": {
        "name": "Vladimir Vivien",
        "email": "vladimir.vivien@gmail.com",
        "time": "Fri Aug 12 14:14:35 2016 -0400"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sat Aug 20 20:00:39 2016 +0100"
      },
      "message": "Handle TOML Library Licensing\n\nThis patch updates the package used for parsing TOML content from\n\"github.com/BurntSushi/toml\" to \"github.com/pelletier/go-toml\" as the\nlatter uses a more accepted OSS license (MIT), enabling the inclusion of\nViper or projects that depend on Viper in projects that have licensing\nrequirements incongruent with the license of the previous TOML package.\n\nCloses #228\nCloses #225\nFixes #179\n"
    },
    {
      "commit": "fe9c8b59e176537a2a08498fe6a5e131a3b6a304",
      "tree": "55f8477772a49b53eb066f945157763cea506025",
      "parents": [
        "654fc7bb54d0c138ef80405ff577391f79c0c32d"
      ],
      "author": {
        "name": "Schley Andrew Kutz",
        "email": "sakutz@gmail.com",
        "time": "Sat Aug 20 08:03:44 2016 -0500"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sat Aug 20 14:03:44 2016 +0100"
      },
      "message": "Add Hugo CI Step to Validate Viper\n\nSince Hugo is such a heavy user of Viper, this patch adds an\r\nafter_success section to the Travis-CI build that validates the Viper\r\ncommit by attempting to build Hugo and executing `hugo -s docs`.\r\n\r\nThis patch handles issue #222."
    },
    {
      "commit": "654fc7bb54d0c138ef80405ff577391f79c0c32d",
      "tree": "759418f7e551279883e7bfee4138fc0f27bf46dd",
      "parents": [
        "346299ea79e446ebdddb834371ceba2e5926b732"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Tue Aug 16 10:09:34 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Tue Aug 16 10:09:34 2016 +0200"
      },
      "message": "Bump Travis to Go 1.7\n"
    },
    {
      "commit": "346299ea79e446ebdddb834371ceba2e5926b732",
      "tree": "b9ac22b45293005b7623f3cff72fc197226e1998",
      "parents": [
        "abafbf243b9583ac1360ae4ef680d8acaa361089"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sat Aug 06 18:06:49 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sat Aug 06 18:06:49 2016 +0200"
      },
      "message": "Add getter for global Viper\n"
    },
    {
      "commit": "abafbf243b9583ac1360ae4ef680d8acaa361089",
      "tree": "6226438c87e1293f6432b7e5dd119d8b6c05f360",
      "parents": [
        "a59dcccc828173bb1f58d1650619724b59d18af5"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Fri Aug 05 11:20:27 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Fri Aug 05 11:21:53 2016 +0200"
      },
      "message": "Revert \"Handle TOML Library Licensing\"\n\nIt breaks Hugo, will have to test/investigate.\n\nErro when building Hugo docs:\n```\nERROR: 2016/08/05 11:19:23 site.go:1208: unable to process menus in site config\nERROR: 2016/08/05 11:19:23 site.go:1209: Unable to Cast map[string]interface {}{\"pre\":\"\u003ci class\u003d\u0027fa fa-space-shuttle\u0027\u003e\u003c/i\u003e\", \"weight\":-20, \"url\":\"/commands/\", \"name\":\"Hugo Cmd Reference\", \"identifier\":\"commands\"} of type map[string]interface {} to []interface{}\n```\n\nThis reverts commit 7402856f06d639275f36058cd60fb1d8a10d2a52.\n"
    },
    {
      "commit": "a59dcccc828173bb1f58d1650619724b59d18af5",
      "tree": "b1703e0043d7cb9920cd0247c9bbc6976673a78a",
      "parents": [
        "d0c2644870d873080734367010e57b96a0234259"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Fri Aug 05 09:45:58 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Fri Aug 05 09:45:58 2016 +0200"
      },
      "message": "Move the Afero fs to the Viper type\n\nAnd make a exported setter for it.\n"
    },
    {
      "commit": "d0c2644870d873080734367010e57b96a0234259",
      "tree": "90f66280cf55b2b3cb63b906cf5a90f55a6551ad",
      "parents": [
        "4cf0bd27897685ffc5c5409b6a2f8ff5b04cf525"
      ],
      "author": {
        "name": "Albert",
        "email": "albertnigma@gmail.com",
        "time": "Fri Aug 05 12:25:24 2016 +0500"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Fri Aug 05 09:25:24 2016 +0200"
      },
      "message": "Add dot in BindPFlag comment\n\n"
    },
    {
      "commit": "4cf0bd27897685ffc5c5409b6a2f8ff5b04cf525",
      "tree": "2ff8391a8794ae825e2f9d79fb57b46a30c937f1",
      "parents": [
        "5619c0edbec91139df79dd0d0d8d4967f4646a08"
      ],
      "author": {
        "name": "Matthieu Grieger",
        "email": "matthieugrieger@gmail.com",
        "time": "Fri Aug 05 00:24:49 2016 -0700"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Fri Aug 05 09:24:49 2016 +0200"
      },
      "message": "Add support for Afero filesystems\n\n"
    },
    {
      "commit": "5619c0edbec91139df79dd0d0d8d4967f4646a08",
      "tree": "1033ca39322d8e417839cc12055cdaea1ec6eb4b",
      "parents": [
        "64dc6f681062822d3823f74c615e3f6c1f79a30c"
      ],
      "author": {
        "name": "Roland Schilter",
        "email": "roli@schilter.me",
        "time": "Fri Aug 05 09:18:19 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Fri Aug 05 09:18:19 2016 +0200"
      },
      "message": "Reset cache on config name change\n\nI stumbled over this when trying to merge multiple configs.\r\n\r\n```\r\nviper.SetConfigName(\"default\")\r\nerr :\u003d viper.MergeInConfig()\r\n```\r\nwhich caches file path resolvemenet in `v.configFile`\r\n\r\nand then\r\n```\r\nviper.SetConfigName(\"prod\")\r\nerr :\u003d viper.MergeInConfig()\r\n```\r\n\r\nwhich reuses `v.configFile` without updating it accordingly to the new name.\r\n\r\nSee https://github.com/spf13/viper/blob/c1ccc378a054ea8d4e38d8c67f6938d4760b53dd/viper.go#L1240"
    },
    {
      "commit": "64dc6f681062822d3823f74c615e3f6c1f79a30c",
      "tree": "b698d359e14c08fcd45cf81139ab8899f00ab10d",
      "parents": [
        "6d2589cd85af2ffe1b01db0c6aebb5b68d9e87e4"
      ],
      "author": {
        "name": "Chuanjian Wang",
        "email": "ckeyer@users.noreply.github.com",
        "time": "Fri Aug 05 15:16:55 2016 +0800"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Fri Aug 05 09:16:55 2016 +0200"
      },
      "message": "Add GetInt64\n\n"
    },
    {
      "commit": "6d2589cd85af2ffe1b01db0c6aebb5b68d9e87e4",
      "tree": "94293d40bb8c89ac1b842fd15e063e5ef0bac600",
      "parents": [
        "7402856f06d639275f36058cd60fb1d8a10d2a52"
      ],
      "author": {
        "name": "Bryan Liles",
        "email": "bryanliles@gmail.com",
        "time": "Fri Aug 05 03:15:51 2016 -0400"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Fri Aug 05 09:15:51 2016 +0200"
      },
      "message": "Update Readme with doit\u0027s new location\n\ndoit has been moved and renamed to doctl"
    },
    {
      "commit": "7402856f06d639275f36058cd60fb1d8a10d2a52",
      "tree": "402457a286d7f629edc3573f5331f7053052a7d4",
      "parents": [
        "b53595fb56a492ecef90ee0457595a999eb6ec15"
      ],
      "author": {
        "name": "Schley Andrew Kutz",
        "email": "sakutz@gmail.com",
        "time": "Fri Aug 05 02:15:24 2016 -0500"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Fri Aug 05 09:15:24 2016 +0200"
      },
      "message": "Handle TOML Library Licensing\n\nThis patch updates the package used for parsing TOML content from\r\n\"github.com/BurntSushi/toml\" to \"github.com/pelletier/go-toml\" as the\r\nlatter uses a more accepted OSS license (MIT), enabling the inclusion of\r\nViper or projects that depend on Viper in projects that have licensing\r\nrequirements incongruent with the license of the previous TOML package.\r\n\r\nThis patch replaces the PR https://github.com/spf13/viper/pull/208 after\r\ndiscussing the matter with @spf13 and deciding to update the TOML parser\r\ninstead of making TOML build-optional."
    },
    {
      "commit": "b53595fb56a492ecef90ee0457595a999eb6ec15",
      "tree": "6cdce19d5f38df00a1fe15a1666029377a6df00a",
      "parents": [
        "c1ccc378a054ea8d4e38d8c67f6938d4760b53dd"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Jul 18 23:48:14 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Jul 18 23:48:14 2016 +0200"
      },
      "message": "Bump Travis to Go 1.6.3\n"
    },
    {
      "commit": "c1ccc378a054ea8d4e38d8c67f6938d4760b53dd",
      "tree": "d66964f8ab232fe9f9293b7301fee682e9435548",
      "parents": [
        "d8a428b8a30606e1d0b355d91edf282609ade1a6"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Jun 06 00:03:07 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Jun 06 00:03:07 2016 +0200"
      },
      "message": "Test on both Linux and OSX\n"
    },
    {
      "commit": "d8a428b8a30606e1d0b355d91edf282609ade1a6",
      "tree": "08b8c594bcb4ef06ec839a93225ee41f004f1c04",
      "parents": [
        "960e69f7c4cc9c9b67923647b59354868510cbc4"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sun May 08 20:07:13 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sun May 08 20:07:13 2016 +0200"
      },
      "message": "Bump Travis to 1.6.2\n"
    },
    {
      "commit": "960e69f7c4cc9c9b67923647b59354868510cbc4",
      "tree": "53f51b6168e9cd3f4fb2085b542ee6e7993fdc4b",
      "parents": [
        "a0cdbddebd2b4e614f360b2220f32055d1afe7dd"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sun May 08 14:34:24 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sun May 08 14:34:24 2016 +0200"
      },
      "message": "Allow tip to fail on Travis\n"
    },
    {
      "commit": "a0cdbddebd2b4e614f360b2220f32055d1afe7dd",
      "tree": "eb24851c7f2c54fe359dbdd1cc7eb399c644f95d",
      "parents": [
        "f904a1790545169368e8d37badd19d1895d94f29"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sun May 08 13:12:02 2016 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sun May 08 13:12:02 2016 +0200"
      },
      "message": "Remove kr/pretty dependency\n\nSee https://github.com/spf13/hugo/issues/2124\nSee https://github.com/kr/text/issues/6\n"
    },
    {
      "commit": "f904a1790545169368e8d37badd19d1895d94f29",
      "tree": "95f0f01d951ead51557087d75620a9eaea028ecd",
      "parents": [
        "8e57fea7a87e3905de2f3279842c6c14564fe4e4"
      ],
      "author": {
        "name": "Anthony Fok",
        "email": "foka@debian.org",
        "time": "Thu Apr 21 06:40:14 2016 +0800"
      },
      "committer": {
        "name": "Anthony Fok",
        "email": "foka@debian.org",
        "time": "Thu Apr 21 06:40:14 2016 +0800"
      },
      "message": "Update Travis config to Go 1.4.3, 1.5.4 and 1.6.1\n"
    },
    {
      "commit": "8e57fea7a87e3905de2f3279842c6c14564fe4e4",
      "tree": "3b8d801d871a6bccf63f0381712c0ddb8799753c",
      "parents": [
        "45b73b72adfb3137795cd0d51df58de933fcae9b"
      ],
      "author": {
        "name": "Anthony Fok",
        "email": "foka@debian.org",
        "time": "Wed Apr 20 21:51:22 2016 +0800"
      },
      "committer": {
        "name": "Anthony Fok",
        "email": "foka@debian.org",
        "time": "Wed Apr 20 21:51:22 2016 +0800"
      },
      "message": "Update import path of fsnotify\n\nRename \"gopkg.in/fsnotify.v1\" to \"github.com/fsnotify/fsnotify\"\nper upstream recommendation.\n\nSee https://github.com/fsnotify/fsnotify/issues/108 for rationale.\n"
    },
    {
      "commit": "45b73b72adfb3137795cd0d51df58de933fcae9b",
      "tree": "d998fde4e62e8734e8674df9bddc8f2aa950b78e",
      "parents": [
        "c975dc1b4eacf4ec7fdbf0873638de5d090ba323"
      ],
      "author": {
        "name": "Tony Narlock",
        "email": "tony@git-pull.com",
        "time": "Mon Mar 07 02:07:42 2016 -0600"
      },
      "committer": {
        "name": "Anthony Fok",
        "email": "foka@debian.org",
        "time": "Wed Apr 20 21:43:24 2016 +0800"
      },
      "message": "Fix typo\n"
    },
    {
      "commit": "c975dc1b4eacf4ec7fdbf0873638de5d090ba323",
      "tree": "d7a49b84e86e2b2b41664a437cf89fbdad58544d",
      "parents": [
        "dd66c894defa7532e594d9ada941bb3610558305"
      ],
      "author": {
        "name": "dsp",
        "email": "dsp@2f30.org",
        "time": "Tue Dec 29 23:11:39 2015 -0700"
      },
      "committer": {
        "name": "dsp",
        "email": "dsp@2f30.org",
        "time": "Tue Feb 09 16:07:50 2016 -0700"
      },
      "message": "implementing a weak decode wrapper called UnmarshalExact that errors on non existant fields in the destination struct\n"
    },
    {
      "commit": "dd66c894defa7532e594d9ada941bb3610558305",
      "tree": "55a48b6bc2174df6ff24d7c025fa55aba54adbb7",
      "parents": [
        "e072d51737b175ac83688b04999b509edc7908e0"
      ],
      "author": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Mon Feb 08 17:01:43 2016 -0500"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Mon Feb 08 17:01:43 2016 -0500"
      },
      "message": "Populate readme with viper based apps\n"
    },
    {
      "commit": "e072d51737b175ac83688b04999b509edc7908e0",
      "tree": "3326b283fdde3235e907e4bc2ac55f20728be3c0",
      "parents": [
        "30ce444d046d1ba16b2d620223ab1189454cb8f5"
      ],
      "author": {
        "name": "Marcin Stanisławski",
        "email": "marcin.stanislawski@gmail.com",
        "time": "Wed Jan 20 22:15:43 2016 +0100"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Mon Feb 08 15:52:20 2016 -0500"
      },
      "message": "use aliases in all keys list to enable proper Unmarshaling\n"
    },
    {
      "commit": "30ce444d046d1ba16b2d620223ab1189454cb8f5",
      "tree": "4dbcb402cc0a18afa189cd1efc17ae031a9ec927",
      "parents": [
        "a212099cbe6fbe8d07476bfda8d2d39b6ff8f325"
      ],
      "author": {
        "name": "ryanwalls",
        "email": "github@ryanwalls.com",
        "time": "Sat Jan 30 11:44:53 2016 -0700"
      },
      "committer": {
        "name": "ryanwalls",
        "email": "github@ryanwalls.com",
        "time": "Sat Jan 30 11:44:53 2016 -0700"
      },
      "message": "Update README with info about supporting Java properties files"
    },
    {
      "commit": "a212099cbe6fbe8d07476bfda8d2d39b6ff8f325",
      "tree": "80d0dc10513ce0c9ceb9326f5955473543a4cb47",
      "parents": [
        "cc70319ebcf88e363e1b065b24a904315f523d69"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Jan 11 16:07:23 2016 +0100"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Jan 11 16:07:23 2016 +0100"
      },
      "message": "Watch the entire config dir for changes\n\nThen checking the file name in the event handler. This seems to be the only robust way\nof handling changes from a single file on multiple platforms and editors.\n\nSee #142\n"
    },
    {
      "commit": "cc70319ebcf88e363e1b065b24a904315f523d69",
      "tree": "d16ba0e2fdd1d69d171a2b368d574b8a87b9306f",
      "parents": [
        "0c82789feb03da74b3390a5d64b8ce2ce9ba0f3e"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Jan 11 13:34:45 2016 +0100"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon Jan 11 13:34:45 2016 +0100"
      },
      "message": "Fix config watch\n\n* Only add *the* config file, not all possible folders\n* Trigger reload on both write and create events;\n  the latter is what we get from atomic save editors (like TextMate) once https://github.com/go-fsnotify/fsnotify/pull/111 is merged\n\nSee #142\n"
    },
    {
      "commit": "0c82789feb03da74b3390a5d64b8ce2ce9ba0f3e",
      "tree": "eb40a3b7861fda16ec0794cd94e465d3616ac53b",
      "parents": [
        "110492b3001269a0777997fcbe68a60828fac4cb"
      ],
      "author": {
        "name": "Lei Feng",
        "email": "larry.feng@emc.com",
        "time": "Fri Dec 25 12:29:33 2015 +0800"
      },
      "committer": {
        "name": "Lei Feng",
        "email": "larry.feng@emc.com",
        "time": "Sat Dec 26 09:08:49 2015 +0800"
      },
      "message": "Handle the case Get() returns either map[interface{}]interface{} or map[string]interface{}\n"
    },
    {
      "commit": "110492b3001269a0777997fcbe68a60828fac4cb",
      "tree": "dbdfcecdeecb6fc48b24062a018626cb42d245d8",
      "parents": [
        "991d18afb2404beca5bc475995bf76f38729cc8f"
      ],
      "author": {
        "name": "akutz",
        "email": "sakutz@gmail.com",
        "time": "Mon Oct 26 17:52:14 2015 -0500"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Thu Dec 24 10:25:30 2015 -0500"
      },
      "message": "Bugfix for Nested Key Casing\n\nThis patch fixes a bug with how Viper handle\u0027s key casing when keys are\nnested. While Viper is generally case-insensitive, this was not the case\nwith regards to nested keys. This patch makes nested keys insensitive as\nwell.\n"
    },
    {
      "commit": "991d18afb2404beca5bc475995bf76f38729cc8f",
      "tree": "3d87223317cd15c2fc3dff0f71643dc0ca531533",
      "parents": [
        "c8c6312ace53b92403a66e61ba81898f092cabe5"
      ],
      "author": {
        "name": "akutz",
        "email": "sakutz@gmail.com",
        "time": "Thu Nov 12 14:20:40 2015 -0600"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Thu Dec 24 10:24:07 2015 -0500"
      },
      "message": "Adds MergeConfig functionality\n\nThis patch adds the `MergeConfig` and `MergeInConfig` functions to\nenable reading new configuration files via a merge strategy rather\nthan replace. For example, take the following as the base YAML for a\nconfiguration:\n\n    hello:\n        pop: 37890\n        world:\n        - us\n        - uk\n        - fr\n        - de\n\nNow imagine we want to read the following, new configuration data:\n\n    hello:\n        pop: 45000\n        universe:\n        - mw\n        - ad\n    fu: bar\n\nUsing the standard `ReadConfig` function the value returned by the\nnested key `hello.world` would no longer be present after the second\nconfiguration is read. This is because the `ReadConfig` function and\nits relatives replace nested structures entirely.\n\nThe new `MergeConfig` function would produce the following config\nafter the second YAML snippet was merged with the first:\n\n    hello:\n        pop: 45000\n        world:\n        - us\n        - uk\n        - fr\n        - de\n        universe:\n        - mw\n        - ad\n    fu: bar\n\nExamples showing how this works can be found in the two unit tests\nnamed `TestMergeConfig` and `TestMergeConfigNoMerge`.\n"
    },
    {
      "commit": "c8c6312ace53b92403a66e61ba81898f092cabe5",
      "tree": "a583b789c91c4905e0323f55f77fc4b038312d29",
      "parents": [
        "66249a6550e35684689e1b6672c97d5603f83080"
      ],
      "author": {
        "name": "David Calavera",
        "email": "david.calavera@gmail.com",
        "time": "Fri Dec 18 18:34:45 2015 -0500"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Thu Dec 24 10:16:42 2015 -0500"
      },
      "message": "Add information about flag interfaces to the readme file.\n\nSigned-off-by: David Calavera \u003cdavid.calavera@gmail.com\u003e\n"
    },
    {
      "commit": "66249a6550e35684689e1b6672c97d5603f83080",
      "tree": "27100bce2109092e7b6287123e7cb026610adde9",
      "parents": [
        "105e3d0d193906ace416cc994664dbce23dbe1db"
      ],
      "author": {
        "name": "David Calavera",
        "email": "david.calavera@gmail.com",
        "time": "Thu Dec 10 13:14:17 2015 -0500"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Thu Dec 24 10:16:41 2015 -0500"
      },
      "message": "Add FlagValue interface to support other flag systems.\n\nUsing an interface allows people to use their favourite flag system\nwith viper without being restricted to the semantics of pflag or the\nstandard library.\n\nThis change introduce two new functions `BindFlagValues` and\n`BindFlagValue` that behave like `BindFlags` and `BindFlag` but using\nthe new interface as values.\n\nThis change also introduces two internal structures to transform\n`*pflag.FlagSet` and `*pflag.Flag` into the new interface. This way,\nviper keeps working as expected for people that are currently using the\npflag package without breaking backwards compatibility.\n\nSigned-off-by: David Calavera \u003cdavid.calavera@gmail.com\u003e\n"
    },
    {
      "commit": "105e3d0d193906ace416cc994664dbce23dbe1db",
      "tree": "e3fb84ae19342dc50f6ee80308fb20bd597aca9d",
      "parents": [
        "79971f1ae71e74d2e814b9b4bb91fb59b0263654"
      ],
      "author": {
        "name": "Lei Feng",
        "email": "larry.feng@emc.com",
        "time": "Thu Dec 24 19:44:44 2015 +0800"
      },
      "committer": {
        "name": "Lei Feng",
        "email": "larry.feng@emc.com",
        "time": "Thu Dec 24 22:44:14 2015 +0800"
      },
      "message": "Add Sub() for Viper, which returns a branch of a Viper instance.\n"
    },
    {
      "commit": "79971f1ae71e74d2e814b9b4bb91fb59b0263654",
      "tree": "f7b5b93f87656be8910779465e5814d29c4ec78d",
      "parents": [
        "8e6f2421dc46a7152b20752ae0d08bb9cb1268e2"
      ],
      "author": {
        "name": "patdhlk",
        "email": "p@pichu.io",
        "time": "Sun Dec 13 21:47:41 2015 +0100"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Tue Dec 15 14:44:21 2015 -0500"
      },
      "message": "add HCL support to the README file\n"
    },
    {
      "commit": "8e6f2421dc46a7152b20752ae0d08bb9cb1268e2",
      "tree": "274fe08bdfd940443cd18f4ebe9194a9f714dbbf",
      "parents": [
        "60e1b5f5997cd31cc585d618d839d6e4a2cf0e1b"
      ],
      "author": {
        "name": "patdhlk",
        "email": "p@pichu.io",
        "time": "Sun Dec 13 21:37:32 2015 +0100"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Tue Dec 15 14:44:21 2015 -0500"
      },
      "message": "add test structure for hcl\n"
    },
    {
      "commit": "60e1b5f5997cd31cc585d618d839d6e4a2cf0e1b",
      "tree": "82ef36cf31362d15b57b62e74e549486ec28e011",
      "parents": [
        "606a4f39334a643807afd0509ee9650e42ff0a47"
      ],
      "author": {
        "name": "patdhlk",
        "email": "p@pichu.io",
        "time": "Sat Dec 12 00:27:07 2015 +0100"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Tue Dec 15 14:44:21 2015 -0500"
      },
      "message": "changed the test hcl config\n"
    },
    {
      "commit": "606a4f39334a643807afd0509ee9650e42ff0a47",
      "tree": "28cd0e1061ddb809d37e332c35f9e284c09acf36",
      "parents": [
        "5c53af5e4fb841b9f34dd41339435c03fbad1b7e"
      ],
      "author": {
        "name": "patdhlk",
        "email": "p@pichu.io",
        "time": "Fri Dec 11 23:51:11 2015 +0100"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Tue Dec 15 14:44:21 2015 -0500"
      },
      "message": "add support for hcl\n"
    },
    {
      "commit": "5c53af5e4fb841b9f34dd41339435c03fbad1b7e",
      "tree": "8127d98b0ddbdd9660929306df8bc3cea57ff75e",
      "parents": [
        "823bc1371b287d89a6737da911ee2d22e9e71405"
      ],
      "author": {
        "name": "Sanjay Bhandari",
        "email": "sanjay@ziffusion.com",
        "time": "Fri Dec 04 15:07:55 2015 -0500"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Tue Dec 15 12:58:30 2015 -0500"
      },
      "message": "README: describe interworking with flag package\n"
    },
    {
      "commit": "823bc1371b287d89a6737da911ee2d22e9e71405",
      "tree": "25677718a60c26fc54fce20e68c41d357bf7530d",
      "parents": [
        "87d443c19bf8d0bd1087ad6b4abd7f96370629ae"
      ],
      "author": {
        "name": "Abhinandan",
        "email": "nmabhinandan@gmail.com",
        "time": "Thu Dec 03 21:44:42 2015 +0530"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Tue Dec 15 12:57:56 2015 -0500"
      },
      "message": "Document the use of struct tags to map the dissimilar fields.\n"
    },
    {
      "commit": "87d443c19bf8d0bd1087ad6b4abd7f96370629ae",
      "tree": "e187b102c1c96d531dd4ae5e32cf1f5d9042636e",
      "parents": [
        "90b31f671fffe7d5076beaa832a778ea9ba007f3"
      ],
      "author": {
        "name": "HuKeping",
        "email": "hukeping@huawei.com",
        "time": "Wed Dec 02 18:15:48 2015 +0800"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Tue Dec 15 12:54:05 2015 -0500"
      },
      "message": "Fix tab issue.\n\nAs the title said.\n"
    },
    {
      "commit": "90b31f671fffe7d5076beaa832a778ea9ba007f3",
      "tree": "7549c4b5a7a644f3b5519eb701f1d34bca3d3d34",
      "parents": [
        "e3bc06f20c7a60e8042d3f8741551ce606d31c40",
        "cc3dd557e0390d2ae0b3b1fa207f520c219ef129"
      ],
      "author": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Fri Dec 11 21:21:22 2015 -0500"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Fri Dec 11 21:21:22 2015 -0500"
      },
      "message": "Merge pull request #138 from derekparker/fix-typo\n\nreadme: Fix typo"
    },
    {
      "commit": "e3bc06f20c7a60e8042d3f8741551ce606d31c40",
      "tree": "f07bba36c791ac9e6abbf7f419cde106e953444a",
      "parents": [
        "ce08532bfdded310e8ac7dfd0c490f29a7c27c98"
      ],
      "author": {
        "name": "akutz",
        "email": "sakutz@gmail.com",
        "time": "Sun Nov 29 17:16:21 2015 -0600"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Fri Dec 11 16:17:57 2015 -0500"
      },
      "message": "Refactored IsSet to examine keys\n\nThis patch refactors the IsSet function to examine the keys in order\nto see if a key is set instead of simply checking if a value is nil.\nThis change is necessary due to the fact that default values via\nflag bindings will result in the old logic always being true for\nthe IsSet function due to a type\u0027s default value such as 0 for an\ninteger or an empty string for a string. While a type\u0027s default\nvalue may be preferable when getting the value for a key, it\nresults in a false positive when determining if a key is actually\nset. This change enables users to detect whether a key is set by\nonly returning a flag\u0027s value if it has changed.\n"
    },
    {
      "commit": "ce08532bfdded310e8ac7dfd0c490f29a7c27c98",
      "tree": "41cdc72e7ecf75c245368d0aa6d96a6c10529b58",
      "parents": [
        "c25387f10d265e6ed88fef3fe3d37bc757124983"
      ],
      "author": {
        "name": "Jonathan Boulle",
        "email": "jonathanboulle@gmail.com",
        "time": "Wed Nov 25 11:51:57 2015 -0800"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Fri Dec 11 16:14:08 2015 -0500"
      },
      "message": "Correct \"etcd\" naming\n\nThe project should always be referred to in lowercase.\n"
    },
    {
      "commit": "cc3dd557e0390d2ae0b3b1fa207f520c219ef129",
      "tree": "7a179b6d525a8586c468465cebc03815c7ba90b2",
      "parents": [
        "e37b56e207dda4d79b9defe0548e960658ee8b6b"
      ],
      "author": {
        "name": "Derek Parker",
        "email": "derek.parker@coreos.com",
        "time": "Thu Dec 03 11:47:09 2015 -0800"
      },
      "committer": {
        "name": "Derek Parker",
        "email": "derek.parker@coreos.com",
        "time": "Thu Dec 03 11:47:09 2015 -0800"
      },
      "message": "readme: Fix typo\n"
    },
    {
      "commit": "c25387f10d265e6ed88fef3fe3d37bc757124983",
      "tree": "32a69f45fb98a8e6911e4180caee2b0bdc1f698e",
      "parents": [
        "e37b56e207dda4d79b9defe0548e960658ee8b6b"
      ],
      "author": {
        "name": "akutz",
        "email": "sakutz@gmail.com",
        "time": "Thu Oct 29 12:57:16 2015 -0500"
      },
      "committer": {
        "name": "akutz",
        "email": "sakutz@gmail.com",
        "time": "Thu Nov 12 14:28:38 2015 -0600"
      },
      "message": "AllKeys() now includes bound flag and env var keys\n\nThis patch fixes a bug where the function `AllKeys()` did not include\nthe keys for bound flags and environment variables.\n"
    },
    {
      "commit": "e37b56e207dda4d79b9defe0548e960658ee8b6b",
      "tree": "7a7d9dafd5e9cf8268ddf2627971b6987ae2f321",
      "parents": [
        "c374c6d0a933b8276ebf73d392c21f9166586f3a"
      ],
      "author": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Mon Nov 09 23:22:04 2015 -0500"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Mon Nov 09 23:22:04 2015 -0500"
      },
      "message": "Add dynamic reading of config file support\n"
    },
    {
      "commit": "c374c6d0a933b8276ebf73d392c21f9166586f3a",
      "tree": "4561f1bdfc989054797c27ed464525301bdfe8d4",
      "parents": [
        "a7ef020a9a8138a7d40d39796b1a4023d46328cb"
      ],
      "author": {
        "name": "akutz",
        "email": "sakutz@gmail.com",
        "time": "Mon Nov 09 16:58:46 2015 -0600"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Mon Nov 09 19:24:13 2015 -0500"
      },
      "message": "Flag Binding Refactor\n\nThis patch alters the way flags are handled to coincide with the\ndocumentation on the Viper README. The documentation indicated that flag\nbindings were late, when in fact they were very, very early. This patch\nchanges flag bindings to behave as late bindings.\n"
    },
    {
      "commit": "a7ef020a9a8138a7d40d39796b1a4023d46328cb",
      "tree": "4417bc1b897c2bb8ce48a0b13a2ee1b680a8494f",
      "parents": [
        "87b94ba48604b6be709dc242d0261f3723384b74"
      ],
      "author": {
        "name": "Vlad Didenko",
        "email": "git@didenko.com",
        "time": "Fri Nov 06 13:43:15 2015 -0600"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Fri Nov 06 14:50:12 2015 -0500"
      },
      "message": "Clarify CWD search. Fixes #32\n"
    },
    {
      "commit": "87b94ba48604b6be709dc242d0261f3723384b74",
      "tree": "4b875ac13f1c422d14402eae12938aefaba17224",
      "parents": [
        "6a665317fd5e2c13e1fbcaca0d67442192e8c9ef"
      ],
      "author": {
        "name": "James Sweet",
        "email": "james.sweet88@googlemail.com",
        "time": "Tue Oct 13 18:31:32 2015 -0400"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Wed Nov 04 19:35:10 2015 -0500"
      },
      "message": "Fixed #115: Added code in the find method to search for nested configuration parameters\n"
    },
    {
      "commit": "6a665317fd5e2c13e1fbcaca0d67442192e8c9ef",
      "tree": "5d017558417fda97ede01eba853ccc086726d4d9",
      "parents": [
        "3041a43debf19997d630873c2679455fb7fcc85a"
      ],
      "author": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Wed Nov 04 18:15:48 2015 -0500"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Wed Nov 04 18:15:48 2015 -0500"
      },
      "message": "use docker based travis-ci\n"
    },
    {
      "commit": "3041a43debf19997d630873c2679455fb7fcc85a",
      "tree": "7cefceb31796ca73ef5d0be52054effd8e70ed80",
      "parents": [
        "493be7d534084c3382ddeddab6f78837381179b8"
      ],
      "author": {
        "name": "James Mintram",
        "email": "jamesmintram@gmail.com",
        "time": "Thu Oct 22 16:25:52 2015 +0100"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Wed Nov 04 18:06:12 2015 -0500"
      },
      "message": "Noticed a couple ot typos"
    },
    {
      "commit": "493be7d534084c3382ddeddab6f78837381179b8",
      "tree": "a423de9af5c44edb032f106bf5a524ce10288d38",
      "parents": [
        "d2f75b4befcf56b1627807acc5f10fd19e9784cf"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Mon Oct 26 14:36:42 2015 +1100"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Wed Nov 04 18:05:20 2015 -0500"
      },
      "message": "Fix import syntax in README.md."
    },
    {
      "commit": "d2f75b4befcf56b1627807acc5f10fd19e9784cf",
      "tree": "861eadae1d8ddf233bf79681c24ce7aa82b09ed6",
      "parents": [
        "1967d93db724f4a5c0e101307e96d82ff520a067"
      ],
      "author": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Mon Nov 02 11:07:43 2015 -0500"
      },
      "committer": {
        "name": "Steve Francia",
        "email": "steve.francia@gmail.com",
        "time": "Mon Nov 02 11:07:43 2015 -0500"
      },
      "message": "Add logo to readme"
    },
    {
      "commit": "1967d93db724f4a5c0e101307e96d82ff520a067",
      "tree": "1b1d737e6a337bcc45a35692b854a79bdcc6c138",
      "parents": [
        "0a4a93b685e891150e26386f3be5f505cfd1a6ee"
      ],
      "author": {
        "name": "Matt Surabian",
        "email": "matt@mattsurabian.com",
        "time": "Sun Aug 23 23:40:56 2015 -0400"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Tue Sep 08 08:24:57 2015 -0400"
      },
      "message": "Fixed #36: Changed Marshal to Unmarshal throughout.\n"
    },
    {
      "commit": "0a4a93b685e891150e26386f3be5f505cfd1a6ee",
      "tree": "d29bc6fc0536eaa945f840d5d682fe98f1e48c2c",
      "parents": [
        "3c0ff861e3d9906ecc4ebfb7e41557d44d3e277b"
      ],
      "author": {
        "name": "akutz",
        "email": "sakutz@gmail.com",
        "time": "Sat Aug 29 10:54:20 2015 -0500"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Tue Sep 08 08:23:06 2015 -0400"
      },
      "message": "[110] Default Values Specify Type\n\nThis patch adds a feature, if enabled, will infer a value\u0027s type from\nits default value no matter from where else the value is set. This is\nparticularly important when working with environment variables. For\nexample:\n\n    package main\n\n    import (\n      \"fmt\"\n      \"os\"\n\n      \"github.com/spf13/viper\"\n    )\n\n    func print(name string, val interface{}) {\n      fmt.Printf(\"%-15[1]s%-15[2]T%[2]v\\n\", name, val)\n    }\n\n    func main() {\n      viper.BindEnv(\"mykey\", \"MYPREFIX_MYKEY\")\n      viper.SetDefault(\"mykey\", []string{})\n      os.Setenv(\"MYPREFIX_MYKEY\", \"a b c\")\n\n      v1 :\u003d viper.GetStringSlice(\"mykey\")\n      v2 :\u003d viper.Get(\"mykey\")\n\n      print(\"v1\", v1)\n      print(\"v2\", v2)\n    }\n\nWhen this program is executed the following is emitted:\n\n    [0]akutz@pax:ex$ ./ex1\n    v1             []string       [a b c]\n    v2             string         a b c\n    [0]akutz@pax:ex$\n\nYou may wonder, why is this important? Just use the GetStringSlice\nfunction. Well, it *becomes* important when dealing with marshaling.\nIf we update the above program to this:\n\n    package main\n\n    import (\n      \"fmt\"\n      \"os\"\n\n      \"github.com/spf13/viper\"\n    )\n\n    type Data struct {\n      MyKey []string\n    }\n\n    func print(name string, val interface{}) {\n      fmt.Printf(\"%-15[1]s%-15[2]T%[2]v\\n\", name, val)\n    }\n\n    func main() {\n      viper.BindEnv(\"mykey\", \"MYPREFIX_MYKEY\")\n      viper.SetDefault(\"mykey\", []string{})\n      os.Setenv(\"MYPREFIX_MYKEY\", \"a b c\")\n\n      v1 :\u003d viper.GetStringSlice(\"mykey\")\n      v2 :\u003d viper.Get(\"mykey\")\n\n      print(\"v1\", v1)\n      print(\"v2\", v2)\n\n      d :\u003d \u0026Data{}\n      viper.Marshal(d)\n      print(\"d.MyKey\", d.MyKey)\n    }\n\nNow we can see the issue when we execute the updated program:\n\n    [0]akutz@pax:ex$ ./ex2\n    v1             []string       [a b c]\n    v2             string         a b c\n    d.MyKey        []string       []\n    [0]akutz@pax:ex$\n\nThe marshalled data structure\u0027s field MyKey is empty when in fact it\nshould have a string slice equal to, in value, []string {\"a\", \"b\",\n\"c\"}.\n\nThe problem is that viper\u0027s Marshal function calls AllSettings which\nultimately uses the Get function. The Get function does try to infer\nthe value\u0027s type, but it does so using the type of the value retrieved\nusing this logic:\n\n    Get has the behavior of returning the value associated with the\n    first place from where it is set. Viper will check in the\n    following order:\n\n      * override\n      * flag\n      * env\n      * config file\n      * key/value store\n      * default\n\nWhile the above order is the one we want when retrieving the values,\nthis patch enables users to decide if it\u0027s the order they want to be\nused when inferring a value\u0027s type. To that end the function\nSetTypeByDefaultValue is introduced. When SetTypeByDefaultValue(true)\nis called, a call to the Get function will now first check a key\u0027s\ndefault value, if set, when inferring a value\u0027s type. This is\ndemonstrated using a modified version of the same program above:\n\n    package main\n\n    import (\n      \"fmt\"\n      \"os\"\n\n      \"github.com/spf13/viper\"\n    )\n\n    type Data struct {\n      MyKey []string\n    }\n\n    func print(name string, val interface{}) {\n      fmt.Printf(\"%-15[1]s%-15[2]T%[2]v\\n\", name, val)\n    }\n\n    func main() {\n      viper.BindEnv(\"mykey\", \"MYPREFIX_MYKEY\")\n      viper.SetDefault(\"mykey\", []string{})\n      os.Setenv(\"MYPREFIX_MYKEY\", \"a b c\")\n\n      v1 :\u003d viper.GetStringSlice(\"mykey\")\n      v2 :\u003d viper.Get(\"mykey\")\n\n      print(\"v1\", v1)\n      print(\"v2\", v2)\n\n      d1 :\u003d \u0026Data{}\n      viper.Marshal(d1)\n      print(\"d1.MyKey\", d1.MyKey)\n\n      viper.SetTypeByDefaultValue(true)\n\n      d2 :\u003d \u0026Data{}\n      viper.Marshal(d2)\n      print(\"d2.MyKey\", d2.MyKey)\n    }\n\nNow the following is emitted:\n\n    [0]akutz@pax:ex$ ./ex3\n    v1             []string       [a b c]\n    v2             string         a b c\n    d1.MyKey       []string       []\n    d2.MyKey       []string       [a b c]\n    [0]akutz@pax:ex$\n"
    },
    {
      "commit": "3c0ff861e3d9906ecc4ebfb7e41557d44d3e277b",
      "tree": "3cbdabbd29b89560a12bba88f988e23e2fbd2b4b",
      "parents": [
        "09ba0a69542e17a89deef22ab2ccf130abc49960"
      ],
      "author": {
        "name": "jackspirou",
        "email": "jack.spirou@target.com",
        "time": "Mon Aug 03 11:42:26 2015 -0500"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Wed Aug 26 08:50:40 2015 -0400"
      },
      "message": "running tests again\n"
    },
    {
      "commit": "09ba0a69542e17a89deef22ab2ccf130abc49960",
      "tree": "d8c2d1abbd1a13265d2aea9af152160bbd3192e4",
      "parents": [
        "d028fd65ba5c356e75b72f496f6a8b41fa2a2506"
      ],
      "author": {
        "name": "jackspirou",
        "email": "jack.spirou@target.com",
        "time": "Thu Jul 30 15:46:38 2015 -0500"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Wed Aug 26 08:50:40 2015 -0400"
      },
      "message": "fixing second slice type needed\n"
    },
    {
      "commit": "d028fd65ba5c356e75b72f496f6a8b41fa2a2506",
      "tree": "a871ba176b84bc9b96ccb77478bacb8dbd96a760",
      "parents": [
        "cc1c9a82a5b88b5d08a4cb9a097eeaf76aff12a5"
      ],
      "author": {
        "name": "jackspirou",
        "email": "jack.spirou@target.com",
        "time": "Thu Jul 30 15:44:12 2015 -0500"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Wed Aug 26 08:50:40 2015 -0400"
      },
      "message": "changing import statements back\n"
    },
    {
      "commit": "cc1c9a82a5b88b5d08a4cb9a097eeaf76aff12a5",
      "tree": "77236cc183daf2626278e7754f5d8087e4cb65bf",
      "parents": [
        "0a12778a8c4105a49084fe17833c25de12fdf9c0"
      ],
      "author": {
        "name": "jackspirou",
        "email": "jack.spirou@target.com",
        "time": "Thu Jul 30 15:43:18 2015 -0500"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Wed Aug 26 08:50:40 2015 -0400"
      },
      "message": "typo: slice type needed\n"
    },
    {
      "commit": "0a12778a8c4105a49084fe17833c25de12fdf9c0",
      "tree": "2c4f6e0beac4cfa384b451933fe2f73536a7ced2",
      "parents": [
        "b9316c3299b95d429c49f2f67d5ec824cd87c95e"
      ],
      "author": {
        "name": "jackspirou",
        "email": "jack.spirou@target.com",
        "time": "Thu Jul 30 15:38:59 2015 -0500"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Wed Aug 26 08:50:40 2015 -0400"
      },
      "message": "using my own version of github.com/spf13/cast for now\n"
    },
    {
      "commit": "b9316c3299b95d429c49f2f67d5ec824cd87c95e",
      "tree": "d67b3e8965a8c33cd0048fe2c6997053ce407d32",
      "parents": [
        "9fca10189b1307bba68b2cd487dd93da0bfbda06"
      ],
      "author": {
        "name": "jackspirou",
        "email": "jack.spirou@target.com",
        "time": "Thu Jul 30 15:27:34 2015 -0500"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Wed Aug 26 08:50:40 2015 -0400"
      },
      "message": "adding GetStringMapStringSlice method\n"
    },
    {
      "commit": "9fca10189b1307bba68b2cd487dd93da0bfbda06",
      "tree": "8f601bb109fb01b675876b25e4e4c68d0b902d03",
      "parents": [
        "fa137328f661c0f680980a7aaf3463ffb67c5361"
      ],
      "author": {
        "name": "Vlad Didenko",
        "email": "git@didenko.com",
        "time": "Sat Aug 01 19:37:27 2015 -0500"
      },
      "committer": {
        "name": "Vlad Didenko",
        "email": "git@didenko.com",
        "time": "Mon Aug 17 00:11:40 2015 -0500"
      },
      "message": "Fixed #73\n"
    },
    {
      "commit": "fa137328f661c0f680980a7aaf3463ffb67c5361",
      "tree": "776d2d50a3a278641f220e0bad556e83422ab8d9",
      "parents": [
        "2abb1bebfde865b0bb6bb7ada5be63ec78527fa6"
      ],
      "author": {
        "name": "Vlad Didenko",
        "email": "git@didenko.com",
        "time": "Sat Aug 01 20:32:35 2015 -0500"
      },
      "committer": {
        "name": "Vlad Didenko",
        "email": "git@didenko.com",
        "time": "Mon Aug 17 00:09:59 2015 -0500"
      },
      "message": "Fixed #68\n"
    },
    {
      "commit": "2abb1bebfde865b0bb6bb7ada5be63ec78527fa6",
      "tree": "4f7d9b7b453c956bc9c6b868c67090c9c39b6257",
      "parents": [
        "f14e1baa25512e9db64680b409d175570f9dd183"
      ],
      "author": {
        "name": "jackspirou",
        "email": "jack.spirou@target.com",
        "time": "Sun Jul 19 12:52:04 2015 -0500"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Thu Jul 30 10:46:19 2015 -0700"
      },
      "message": "Readme fixes and small edits\n"
    },
    {
      "commit": "f14e1baa25512e9db64680b409d175570f9dd183",
      "tree": "4e9283ea4f4ae860a1436ea4628a5e4f795f75db",
      "parents": [
        "1e6a237e0575f6357c3516837b2fc35add0cc6f4"
      ],
      "author": {
        "name": "Vlad Didenko",
        "email": "git@didenko.com",
        "time": "Sat Jul 18 17:30:30 2015 -0500"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Thu Jul 30 10:35:06 2015 -0700"
      },
      "message": "Fixes #83\n"
    },
    {
      "commit": "1e6a237e0575f6357c3516837b2fc35add0cc6f4",
      "tree": "7ae603b60724ce7c02038347f8aceba36b571d84",
      "parents": [
        "db7ff930a189b98d602179d9001d33345f42b8c7"
      ],
      "author": {
        "name": "Maxime Horcholle",
        "email": "maxime.horcholle@gmail.com",
        "time": "Thu Jul 16 14:16:31 2015 +0200"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Thu Jul 30 10:28:50 2015 -0700"
      },
      "message": "Syntax highlighting\n"
    },
    {
      "commit": "db7ff930a189b98d602179d9001d33345f42b8c7",
      "tree": "4091498b75e0ab8301363b6a5f6db183b2bb9514",
      "parents": [
        "8e930a9714cfb3eeb1a4dadb446facaebecd755b"
      ],
      "author": {
        "name": "Kiril Zvezdarov",
        "email": "kzvezdarov@gmail.com",
        "time": "Sun Jun 21 19:19:00 2015 -0400"
      },
      "committer": {
        "name": "Kiril Zvezdarov",
        "email": "kzvezdarov@gmail.com",
        "time": "Sun Jun 21 19:19:00 2015 -0400"
      },
      "message": "AddSecureRemoteProvider adds the secret keyring to the default provider struct\n"
    },
    {
      "commit": "8e930a9714cfb3eeb1a4dadb446facaebecd755b",
      "tree": "1000d44f0958f11ae1d99fb3fb0269f6e98799b1",
      "parents": [
        "ca00a9b4f78a0bf982b54e8a5689fa6a142ce0f9"
      ],
      "author": {
        "name": "Kiril Zvezdarov",
        "email": "kzvezdarov@gmail.com",
        "time": "Sun Jun 21 19:13:01 2015 -0400"
      },
      "committer": {
        "name": "Kiril Zvezdarov",
        "email": "kzvezdarov@gmail.com",
        "time": "Sun Jun 21 19:13:01 2015 -0400"
      },
      "message": "Revert \"The AddSecureRemoteProvider function didn\u0027t add secretKeyring to the remoteProvider struct.\"\n\nThis reverts commit ca00a9b4f78a0bf982b54e8a5689fa6a142ce0f9.\n"
    },
    {
      "commit": "ca00a9b4f78a0bf982b54e8a5689fa6a142ce0f9",
      "tree": "2ed6b80166e63e328b2d24ae38ac872d31b7842b",
      "parents": [
        "12f7ec6566254ef4259f8cca4aabeef8c7d6a0b8"
      ],
      "author": {
        "name": "chalupaul",
        "email": "chalupaul@chalupauls-air.rackspace.corp",
        "time": "Wed May 27 15:50:32 2015 -0500"
      },
      "committer": {
        "name": "Kiril Zvezdarov",
        "email": "kzvezdarov@gmail.com",
        "time": "Sun Jun 21 19:09:06 2015 -0400"
      },
      "message": "The AddSecureRemoteProvider function didn\u0027t add secretKeyring to the remoteProvider struct.\n"
    },
    {
      "commit": "12f7ec6566254ef4259f8cca4aabeef8c7d6a0b8",
      "tree": "1000d44f0958f11ae1d99fb3fb0269f6e98799b1",
      "parents": [
        "28ada1e5b0d3edf3d0402f2d425044ee9faaffc1"
      ],
      "author": {
        "name": "Vlad Didenko",
        "email": "git@didenko.com",
        "time": "Mon Jun 15 09:31:24 2015 -0500"
      },
      "committer": {
        "name": "Kiril Zvezdarov",
        "email": "kzvezdarov@gmail.com",
        "time": "Sun Jun 21 18:58:48 2015 -0400"
      },
      "message": "Fixes #87\n"
    },
    {
      "commit": "28ada1e5b0d3edf3d0402f2d425044ee9faaffc1",
      "tree": "e7451f40b702d37d430b96364f2d7726861a7c1d",
      "parents": [
        "be5ff3e4840cf692388bde7a057595a474ef379e"
      ],
      "author": {
        "name": "Dotan Nahum",
        "email": "jondotan@gmail.com",
        "time": "Wed May 27 18:15:02 2015 +0300"
      },
      "committer": {
        "name": "Kiril Zvezdarov",
        "email": "kzvezdarov@gmail.com",
        "time": "Sun Jun 21 18:51:43 2015 -0400"
      },
      "message": "Nested keys properly recurse on map[interface{}]interface{}\n"
    },
    {
      "commit": "be5ff3e4840cf692388bde7a057595a474ef379e",
      "tree": "3efd3b3325d6f7d4416937a051279fbc454d3fe0",
      "parents": [
        "d62d4bb4c68a773c3b5f4e72844913a2d5de0de0"
      ],
      "author": {
        "name": "bep",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sat May 30 21:28:33 2015 +0200"
      },
      "committer": {
        "name": "bep",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Sat May 30 21:28:45 2015 +0200"
      },
      "message": "Make the remote features optional\n"
    },
    {
      "commit": "d62d4bb4c68a773c3b5f4e72844913a2d5de0de0",
      "tree": "777344353a287c67c6af20eb90f1a11ff7712ad8",
      "parents": [
        "0d75ecea1c8c20a98fe8def0b7a3ad7f515029b8",
        "79ee5adf46471544638c7a3e3bf41f85dd1d63bf"
      ],
      "author": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Fri May 22 23:30:46 2015 +0200"
      },
      "committer": {
        "name": "Bjørn Erik Pedersen",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Fri May 22 23:30:46 2015 +0200"
      },
      "message": "Merge pull request #72 from kzvezdarov/cwd-fix\n\nRemoved CWD from default search path"
    },
    {
      "commit": "79ee5adf46471544638c7a3e3bf41f85dd1d63bf",
      "tree": "777344353a287c67c6af20eb90f1a11ff7712ad8",
      "parents": [
        "0d75ecea1c8c20a98fe8def0b7a3ad7f515029b8"
      ],
      "author": {
        "name": "Kiril Zvezdarov",
        "email": "kzvezdarov@monetate.com",
        "time": "Fri May 22 17:19:48 2015 -0400"
      },
      "committer": {
        "name": "Kiril Zvezdarov",
        "email": "kzvezdarov@monetate.com",
        "time": "Fri May 22 17:19:48 2015 -0400"
      },
      "message": "Removed CWD from default search path\n"
    },
    {
      "commit": "0d75ecea1c8c20a98fe8def0b7a3ad7f515029b8",
      "tree": "3f943133e5ea0722e1ce3ca3a2cff133bad76855",
      "parents": [
        "f3482afcd0014f4cffebd06581212c98f4ca37de"
      ],
      "author": {
        "name": "oliveagle",
        "email": "oliveagle@gmail.com",
        "time": "Fri May 15 19:36:05 2015 +0800"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Tue May 19 10:07:30 2015 -0400"
      },
      "message": "update README.md\n\n[close #66]\n"
    },
    {
      "commit": "f3482afcd0014f4cffebd06581212c98f4ca37de",
      "tree": "24c98e30c0fe41a979488cd9d3bab0fdfc92ab69",
      "parents": [
        "2a7f7f40fcf2e9c414811974ab8ab070abf7acc2"
      ],
      "author": {
        "name": "oliveagle",
        "email": "oliveagle@gmail.com",
        "time": "Thu May 14 17:40:59 2015 +0800"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Tue May 19 10:07:21 2015 -0400"
      },
      "message": "replace bytes.Buffer with io.Reader\n"
    },
    {
      "commit": "2a7f7f40fcf2e9c414811974ab8ab070abf7acc2",
      "tree": "e5c91c4d927d8cfe08dfd6c98f27040cfe26c2e0",
      "parents": [
        "4aa8f945118c1dbc137cf3db11df32deb22af735"
      ],
      "author": {
        "name": "oliveagle",
        "email": "oliveagle@gmail.com",
        "time": "Mon May 11 12:33:35 2015 +0800"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Tue May 19 10:07:21 2015 -0400"
      },
      "message": "add README.md, and fix strings.ToLower(configType)\n"
    },
    {
      "commit": "4aa8f945118c1dbc137cf3db11df32deb22af735",
      "tree": "d032a7c1f1d1c92a4b4badb971ee989435270181",
      "parents": [
        "3492885e84d384dfd46511bde663e0bab3a75e00"
      ],
      "author": {
        "name": "oliveagle",
        "email": "oliveagle@gmail.com",
        "time": "Fri May 08 17:18:00 2015 +0800"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Tue May 19 10:07:21 2015 -0400"
      },
      "message": "clean a little: added watch and ReadBufConf\n"
    },
    {
      "commit": "3492885e84d384dfd46511bde663e0bab3a75e00",
      "tree": "ff0586277d9fa1db02630986cae548e56963f9f2",
      "parents": [
        "be782f3fee037d2db69c1c8af0e985e81e1ac273"
      ],
      "author": {
        "name": "oliveagle",
        "email": "oliveagle@gmail.com",
        "time": "Fri May 08 17:13:33 2015 +0800"
      },
      "committer": {
        "name": "spf13",
        "email": "steve.francia@gmail.com",
        "time": "Tue May 19 10:07:21 2015 -0400"
      },
      "message": "ReadBufConfig\n"
    },
    {
      "commit": "be782f3fee037d2db69c1c8af0e985e81e1ac273",
      "tree": "94409ce70545c0e5474ea90b8c40a6a378c3560f",
      "parents": [
        "2e47d9ed4a4ee0cad6e154285e1e0509749b4b3c"
      ],
      "author": {
        "name": "bep",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon May 11 23:36:42 2015 +0200"
      },
      "committer": {
        "name": "bep",
        "email": "bjorn.erik.pedersen@gmail.com",
        "time": "Mon May 11 23:36:48 2015 +0200"
      },
      "message": "Revert \"Recursively insensitivize the configuration structures\"\n\nThis reverts commit 8d9577a72e57989b539c3cb7d7691673ed422af1.\n\nThe commit is reasonable enough, but this is a major breaking change for Hugo.\n\nWe have to figure out how to handle this before we introduce this one.\n\nSee https://github.com/spf13/hugo/issues/1129\n"
    },
    {
      "commit": "2e47d9ed4a4ee0cad6e154285e1e0509749b4b3c",
      "tree": "fae28751d2fd43d775173640b1d422a2aa814c01",
      "parents": [
        "8d9577a72e57989b539c3cb7d7691673ed422af1"
      ],
      "author": {
        "name": "Kiril Zvezdarov",
        "email": "kzvezdarov@monetate.com",
        "time": "Sat May 02 14:20:33 2015 -0400"
      },
      "committer": {
        "name": "Kiril Zvezdarov",
        "email": "kzvezdarov@monetate.com",
        "time": "Sat May 02 14:20:33 2015 -0400"
      },
      "message": "Added doc entry on nested key access\n"
    }
  ],
  "next": "8d9577a72e57989b539c3cb7d7691673ed422af1"
}
