{"action":"created","comment":{"url":"https://api.github.com/repos/habitat-sh/habitat/pulls/comments/218610451","pull_request_review_id":156588418,"id":218610451,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxODYxMDQ1MQ==","diff_hunk":"@@ -0,0 +1,204 @@\n+// Copyright (c) 2018 Chef Software Inc. and/or applicable contributors\n+//\n+// Licensed under the Apache License, Version 2.0 (the \"License\");\n+// you may not use this file except in compliance with the License.\n+// You may obtain a copy of the License at\n+//\n+//     http://www.apache.org/licenses/LICENSE-2.0\n+//\n+// Unless required by applicable law or agreed to in writing, software\n+// distributed under the License is distributed on an \"AS IS\" BASIS,\n+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+// See the License for the specific language governing permissions and\n+// limitations under the License.\n+\n+//! Provide the means to persist a Supervisor's own incarnation\n+//! number across restarts.\n+\n+use std::fs::{self, File};\n+use std::io::{BufWriter, Read, Write};\n+use std::path::PathBuf;\n+\n+use error::{Error, Result};\n+use member::DEFAULT_INCARNATION;\n+use std::io;\n+use std::num;\n+\n+/// Provide storage of an incarnation number that can persist across\n+/// Supervisor restarts.\n+#[derive(Clone, Debug)]\n+pub struct IncarnationStore {\n+    path: PathBuf,\n+}\n+\n+impl From<PathBuf> for IncarnationStore {\n+    fn from(path: PathBuf) -> Self {\n+        IncarnationStore { path: path }\n+    }\n+}\n+\n+impl IncarnationStore {\n+    /// Ensure that the `IncarnationStore` is backed by a suitable\n+    /// file on disk. If the file does not already exist, create it\n+    /// with an initial incarnation number of 0. If the file does\n+    /// exist, an error will be returned if the contents cannot be\n+    /// parsed.\n+    ///\n+    /// Returns the incarnation that is currently stored in the\n+    /// backing file (even if we just created it, in which case we\n+    /// return `0`).\n+    pub fn initialize(&self) -> Result<u64> {\n+        if !self.path.exists() {\n+            let initial_value = DEFAULT_INCARNATION;\n+            self.store(initial_value)?;\n+            // TODO (CM): set appropriate file permissions here\n+            Ok(initial_value)\n+        } else {\n+            self.retrieve()\n+        }\n+    }\n+\n+    /// Returns the incarnation value found within the file.\n+    ///\n+    /// Returns an error if the file cannot be read or parsed for any\n+    /// reason.\n+    pub fn retrieve(&self) -> Result<u64> {\n+        File::open(&self.path)\n+            .map_err(|e: io::Error| Error::IncarnationIO(self.path.clone(), e))\n+            .and_then(|mut file| {\n+                let mut incarnation = String::new();\n+                file.read_to_string(&mut incarnation)\n+                    .map_err(|e: io::Error| Error::IncarnationIO(self.path.clone(), e))\n+                    .and_then(|_| {\n+                        incarnation.trim().parse().map_err(|e: num::ParseIntError| {\n+                            Error::IncarnationParse(self.path.clone(), e)\n+                        })\n+                    })\n+            })\n+    }\n+\n+    /// Store the given `new_incarnation` to disk.\n+    pub fn store(&self, new_incarnation: u64) -> Result<()> {\n+        let tmp = self.path.with_extension(\"tmp\");\n+        let f =\n+            File::create(&tmp).map_err(|e: io::Error| Error::IncarnationIO(self.path.clone(), e))?;\n+        let mut buf = BufWriter::new(f);\n+        buf.write(new_incarnation.to_string().as_bytes())\n+            .map_err(|e: io::Error| Error::IncarnationIO(self.path.clone(), e))?;\n+        buf.flush()\n+            .map_err(|e: io::Error| Error::IncarnationIO(self.path.clone(), e))?;\n+        fs::rename(&tmp, &self.path)\n+            .map_err(|e: io::Error| Error::IncarnationIO(self.path.clone(), e))?;","path":"components/butterfly/src/server/incarnation_store.rs","position":91,"original_position":91,"commit_id":"488093ae8880663a4989a08d0a28a0ecb2374153","original_commit_id":"488093ae8880663a4989a08d0a28a0ecb2374153","user":{"login":"baumanj","id":5906042,"node_id":"MDQ6VXNlcjU5MDYwNDI=","avatar_url":"https://avatars2.githubusercontent.com/u/5906042?v=4","gravatar_id":"","url":"https://api.github.com/users/baumanj","html_url":"https://github.com/baumanj","followers_url":"https://api.github.com/users/baumanj/followers","following_url":"https://api.github.com/users/baumanj/following{/other_user}","gists_url":"https://api.github.com/users/baumanj/gists{/gist_id}","starred_url":"https://api.github.com/users/baumanj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/baumanj/subscriptions","organizations_url":"https://api.github.com/users/baumanj/orgs","repos_url":"https://api.github.com/users/baumanj/repos","events_url":"https://api.github.com/users/baumanj/events{/privacy}","received_events_url":"https://api.github.com/users/baumanj/received_events","type":"User","site_admin":false},"body":"For `store`, it seems like the last line could be\r\n```rust\r\n        buf.write(new_incarnation.to_string().as_bytes())\r\n            .and_then(|_| buf.flush().and_then(|_| fs::rename(&tmp, &self.path)))\r\n            .map_err(|e: io::Error| Error::IncarnationIO(self.path.clone(), e))\r\n```\r\nno?\r\n\r\nMaybe it's a little too weird. It does eliminate the redundant error handling, though.","created_at":"2018-09-18T22:04:01Z","updated_at":"2018-09-18T22:04:01Z","html_url":"https://github.com/habitat-sh/habitat/pull/5616#discussion_r218610451","pull_request_url":"https://api.github.com/repos/habitat-sh/habitat/pulls/5616","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/comments/218610451"},"html":{"href":"https://github.com/habitat-sh/habitat/pull/5616#discussion_r218610451"},"pull_request":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/5616"}},"in_reply_to_id":218159276},"pull_request":{"url":"https://api.github.com/repos/habitat-sh/habitat/pulls/5616","id":215042533,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE1MDQyNTMz","html_url":"https://github.com/habitat-sh/habitat/pull/5616","diff_url":"https://github.com/habitat-sh/habitat/pull/5616.diff","patch_url":"https://github.com/habitat-sh/habitat/pull/5616.patch","issue_url":"https://api.github.com/repos/habitat-sh/habitat/issues/5616","number":5616,"state":"open","locked":false,"title":"Persist Incarnation Numbers","user":{"login":"christophermaier","id":207178,"node_id":"MDQ6VXNlcjIwNzE3OA==","avatar_url":"https://avatars2.githubusercontent.com/u/207178?v=4","gravatar_id":"","url":"https://api.github.com/users/christophermaier","html_url":"https://github.com/christophermaier","followers_url":"https://api.github.com/users/christophermaier/followers","following_url":"https://api.github.com/users/christophermaier/following{/other_user}","gists_url":"https://api.github.com/users/christophermaier/gists{/gist_id}","starred_url":"https://api.github.com/users/christophermaier/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/christophermaier/subscriptions","organizations_url":"https://api.github.com/users/christophermaier/orgs","repos_url":"https://api.github.com/users/christophermaier/repos","events_url":"https://api.github.com/users/christophermaier/events{/privacy}","received_events_url":"https://api.github.com/users/christophermaier/received_events","type":"User","site_admin":false},"body":"We should persist incarnation numbers across restarts! Now we can!\r\n\r\nRead the commit messages for further details.\r\n\r\nPartially addresses #5581","created_at":"2018-09-12T17:41:14Z","updated_at":"2018-09-18T22:04:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ddbfa258dfc55b1aa43999c9bab4c0e89ebf5606","assignee":{"login":"christophermaier","id":207178,"node_id":"MDQ6VXNlcjIwNzE3OA==","avatar_url":"https://avatars2.githubusercontent.com/u/207178?v=4","gravatar_id":"","url":"https://api.github.com/users/christophermaier","html_url":"https://github.com/christophermaier","followers_url":"https://api.github.com/users/christophermaier/followers","following_url":"https://api.github.com/users/christophermaier/following{/other_user}","gists_url":"https://api.github.com/users/christophermaier/gists{/gist_id}","starred_url":"https://api.github.com/users/christophermaier/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/christophermaier/subscriptions","organizations_url":"https://api.github.com/users/christophermaier/orgs","repos_url":"https://api.github.com/users/christophermaier/repos","events_url":"https://api.github.com/users/christophermaier/events{/privacy}","received_events_url":"https://api.github.com/users/christophermaier/received_events","type":"User","site_admin":false},"assignees":[{"login":"christophermaier","id":207178,"node_id":"MDQ6VXNlcjIwNzE3OA==","avatar_url":"https://avatars2.githubusercontent.com/u/207178?v=4","gravatar_id":"","url":"https://api.github.com/users/christophermaier","html_url":"https://github.com/christophermaier","followers_url":"https://api.github.com/users/christophermaier/followers","following_url":"https://api.github.com/users/christophermaier/following{/other_user}","gists_url":"https://api.github.com/users/christophermaier/gists{/gist_id}","starred_url":"https://api.github.com/users/christophermaier/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/christophermaier/subscriptions","organizations_url":"https://api.github.com/users/christophermaier/orgs","repos_url":"https://api.github.com/users/christophermaier/repos","events_url":"https://api.github.com/users/christophermaier/events{/privacy}","received_events_url":"https://api.github.com/users/christophermaier/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"raskchanky","id":947,"node_id":"MDQ6VXNlcjk0Nw==","avatar_url":"https://avatars1.githubusercontent.com/u/947?v=4","gravatar_id":"","url":"https://api.github.com/users/raskchanky","html_url":"https://github.com/raskchanky","followers_url":"https://api.github.com/users/raskchanky/followers","following_url":"https://api.github.com/users/raskchanky/following{/other_user}","gists_url":"https://api.github.com/users/raskchanky/gists{/gist_id}","starred_url":"https://api.github.com/users/raskchanky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/raskchanky/subscriptions","organizations_url":"https://api.github.com/users/raskchanky/orgs","repos_url":"https://api.github.com/users/raskchanky/repos","events_url":"https://api.github.com/users/raskchanky/events{/privacy}","received_events_url":"https://api.github.com/users/raskchanky/received_events","type":"User","site_admin":false},{"login":"adamhjk","id":4304,"node_id":"MDQ6VXNlcjQzMDQ=","avatar_url":"https://avatars2.githubusercontent.com/u/4304?v=4","gravatar_id":"","url":"https://api.github.com/users/adamhjk","html_url":"https://github.com/adamhjk","followers_url":"https://api.github.com/users/adamhjk/followers","following_url":"https://api.github.com/users/adamhjk/following{/other_user}","gists_url":"https://api.github.com/users/adamhjk/gists{/gist_id}","starred_url":"https://api.github.com/users/adamhjk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamhjk/subscriptions","organizations_url":"https://api.github.com/users/adamhjk/orgs","repos_url":"https://api.github.com/users/adamhjk/repos","events_url":"https://api.github.com/users/adamhjk/events{/privacy}","received_events_url":"https://api.github.com/users/adamhjk/received_events","type":"User","site_admin":false},{"login":"reset","id":54036,"node_id":"MDQ6VXNlcjU0MDM2","avatar_url":"https://avatars1.githubusercontent.com/u/54036?v=4","gravatar_id":"","url":"https://api.github.com/users/reset","html_url":"https://github.com/reset","followers_url":"https://api.github.com/users/reset/followers","following_url":"https://api.github.com/users/reset/following{/other_user}","gists_url":"https://api.github.com/users/reset/gists{/gist_id}","starred_url":"https://api.github.com/users/reset/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/reset/subscriptions","organizations_url":"https://api.github.com/users/reset/orgs","repos_url":"https://api.github.com/users/reset/repos","events_url":"https://api.github.com/users/reset/events{/privacy}","received_events_url":"https://api.github.com/users/reset/received_events","type":"User","site_admin":false},{"login":"fnichol","id":261548,"node_id":"MDQ6VXNlcjI2MTU0OA==","avatar_url":"https://avatars2.githubusercontent.com/u/261548?v=4","gravatar_id":"","url":"https://api.github.com/users/fnichol","html_url":"https://github.com/fnichol","followers_url":"https://api.github.com/users/fnichol/followers","following_url":"https://api.github.com/users/fnichol/following{/other_user}","gists_url":"https://api.github.com/users/fnichol/gists{/gist_id}","starred_url":"https://api.github.com/users/fnichol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fnichol/subscriptions","organizations_url":"https://api.github.com/users/fnichol/orgs","repos_url":"https://api.github.com/users/fnichol/repos","events_url":"https://api.github.com/users/fnichol/events{/privacy}","received_events_url":"https://api.github.com/users/fnichol/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":621112519,"node_id":"MDU6TGFiZWw2MjExMTI1MTk=","url":"https://api.github.com/repos/habitat-sh/habitat/labels/A-supervisor","name":"A-supervisor","color":"87B09A","default":false},{"id":859405758,"node_id":"MDU6TGFiZWw4NTk0MDU3NTg=","url":"https://api.github.com/repos/habitat-sh/habitat/labels/V-sup","name":"V-sup","color":"0fb0bf","default":false},{"id":978537015,"node_id":"MDU6TGFiZWw5Nzg1MzcwMTU=","url":"https://api.github.com/repos/habitat-sh/habitat/labels/X-fix","name":"X-fix","color":"c61d6f","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/habitat-sh/habitat/pulls/5616/commits","review_comments_url":"https://api.github.com/repos/habitat-sh/habitat/pulls/5616/comments","review_comment_url":"https://api.github.com/repos/habitat-sh/habitat/pulls/comments{/number}","comments_url":"https://api.github.com/repos/habitat-sh/habitat/issues/5616/comments","statuses_url":"https://api.github.com/repos/habitat-sh/habitat/statuses/488093ae8880663a4989a08d0a28a0ecb2374153","head":{"label":"habitat-sh:cm/persist-incarnation","ref":"cm/persist-incarnation","sha":"488093ae8880663a4989a08d0a28a0ecb2374153","user":{"login":"habitat-sh","id":18171698,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE4MTcxNjk4","avatar_url":"https://avatars0.githubusercontent.com/u/18171698?v=4","gravatar_id":"","url":"https://api.github.com/users/habitat-sh","html_url":"https://github.com/habitat-sh","followers_url":"https://api.github.com/users/habitat-sh/followers","following_url":"https://api.github.com/users/habitat-sh/following{/other_user}","gists_url":"https://api.github.com/users/habitat-sh/gists{/gist_id}","starred_url":"https://api.github.com/users/habitat-sh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/habitat-sh/subscriptions","organizations_url":"https://api.github.com/users/habitat-sh/orgs","repos_url":"https://api.github.com/users/habitat-sh/repos","events_url":"https://api.github.com/users/habitat-sh/events{/privacy}","received_events_url":"https://api.github.com/users/habitat-sh/received_events","type":"Organization","site_admin":false},"repo":{"id":36098429,"node_id":"MDEwOlJlcG9zaXRvcnkzNjA5ODQyOQ==","name":"habitat","full_name":"habitat-sh/habitat","private":false,"owner":{"login":"habitat-sh","id":18171698,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE4MTcxNjk4","avatar_url":"https://avatars0.githubusercontent.com/u/18171698?v=4","gravatar_id":"","url":"https://api.github.com/users/habitat-sh","html_url":"https://github.com/habitat-sh","followers_url":"https://api.github.com/users/habitat-sh/followers","following_url":"https://api.github.com/users/habitat-sh/following{/other_user}","gists_url":"https://api.github.com/users/habitat-sh/gists{/gist_id}","starred_url":"https://api.github.com/users/habitat-sh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/habitat-sh/subscriptions","organizations_url":"https://api.github.com/users/habitat-sh/orgs","repos_url":"https://api.github.com/users/habitat-sh/repos","events_url":"https://api.github.com/users/habitat-sh/events{/privacy}","received_events_url":"https://api.github.com/users/habitat-sh/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/habitat-sh/habitat","description":"Modern applications with built-in automation","fork":false,"url":"https://api.github.com/repos/habitat-sh/habitat","forks_url":"https://api.github.com/repos/habitat-sh/habitat/forks","keys_url":"https://api.github.com/repos/habitat-sh/habitat/keys{/key_id}","collaborators_url":"https://api.github.com/repos/habitat-sh/habitat/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/habitat-sh/habitat/teams","hooks_url":"https://api.github.com/repos/habitat-sh/habitat/hooks","issue_events_url":"https://api.github.com/repos/habitat-sh/habitat/issues/events{/number}","events_url":"https://api.github.com/repos/habitat-sh/habitat/events","assignees_url":"https://api.github.com/repos/habitat-sh/habitat/assignees{/user}","branches_url":"https://api.github.com/repos/habitat-sh/habitat/branches{/branch}","tags_url":"https://api.github.com/repos/habitat-sh/habitat/tags","blobs_url":"https://api.github.com/repos/habitat-sh/habitat/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/habitat-sh/habitat/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/habitat-sh/habitat/git/refs{/sha}","trees_url":"https://api.github.com/repos/habitat-sh/habitat/git/trees{/sha}","statuses_url":"https://api.github.com/repos/habitat-sh/habitat/statuses/{sha}","languages_url":"https://api.github.com/repos/habitat-sh/habitat/languages","stargazers_url":"https://api.github.com/repos/habitat-sh/habitat/stargazers","contributors_url":"https://api.github.com/repos/habitat-sh/habitat/contributors","subscribers_url":"https://api.github.com/repos/habitat-sh/habitat/subscribers","subscription_url":"https://api.github.com/repos/habitat-sh/habitat/subscription","commits_url":"https://api.github.com/repos/habitat-sh/habitat/commits{/sha}","git_commits_url":"https://api.github.com/repos/habitat-sh/habitat/git/commits{/sha}","comments_url":"https://api.github.com/repos/habitat-sh/habitat/comments{/number}","issue_comment_url":"https://api.github.com/repos/habitat-sh/habitat/issues/comments{/number}","contents_url":"https://api.github.com/repos/habitat-sh/habitat/contents/{+path}","compare_url":"https://api.github.com/repos/habitat-sh/habitat/compare/{base}...{head}","merges_url":"https://api.github.com/repos/habitat-sh/habitat/merges","archive_url":"https://api.github.com/repos/habitat-sh/habitat/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/habitat-sh/habitat/downloads","issues_url":"https://api.github.com/repos/habitat-sh/habitat/issues{/number}","pulls_url":"https://api.github.com/repos/habitat-sh/habitat/pulls{/number}","milestones_url":"https://api.github.com/repos/habitat-sh/habitat/milestones{/number}","notifications_url":"https://api.github.com/repos/habitat-sh/habitat/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/habitat-sh/habitat/labels{/name}","releases_url":"https://api.github.com/repos/habitat-sh/habitat/releases{/id}","deployments_url":"https://api.github.com/repos/habitat-sh/habitat/deployments","created_at":"2015-05-22T22:47:14Z","updated_at":"2018-09-18T19:39:43Z","pushed_at":"2018-09-18T20:46:43Z","git_url":"git://github.com/habitat-sh/habitat.git","ssh_url":"git@github.com:habitat-sh/habitat.git","clone_url":"https://github.com/habitat-sh/habitat.git","svn_url":"https://github.com/habitat-sh/habitat","homepage":"https://www.habitat.sh","size":93549,"stargazers_count":1683,"watchers_count":1683,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":259,"mirror_url":null,"archived":false,"open_issues_count":489,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":259,"open_issues":489,"watchers":1683,"default_branch":"master"}},"base":{"label":"habitat-sh:master","ref":"master","sha":"c206643da7744c6257f97917728bb53352862ed3","user":{"login":"habitat-sh","id":18171698,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE4MTcxNjk4","avatar_url":"https://avatars0.githubusercontent.com/u/18171698?v=4","gravatar_id":"","url":"https://api.github.com/users/habitat-sh","html_url":"https://github.com/habitat-sh","followers_url":"https://api.github.com/users/habitat-sh/followers","following_url":"https://api.github.com/users/habitat-sh/following{/other_user}","gists_url":"https://api.github.com/users/habitat-sh/gists{/gist_id}","starred_url":"https://api.github.com/users/habitat-sh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/habitat-sh/subscriptions","organizations_url":"https://api.github.com/users/habitat-sh/orgs","repos_url":"https://api.github.com/users/habitat-sh/repos","events_url":"https://api.github.com/users/habitat-sh/events{/privacy}","received_events_url":"https://api.github.com/users/habitat-sh/received_events","type":"Organization","site_admin":false},"repo":{"id":36098429,"node_id":"MDEwOlJlcG9zaXRvcnkzNjA5ODQyOQ==","name":"habitat","full_name":"habitat-sh/habitat","private":false,"owner":{"login":"habitat-sh","id":18171698,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE4MTcxNjk4","avatar_url":"https://avatars0.githubusercontent.com/u/18171698?v=4","gravatar_id":"","url":"https://api.github.com/users/habitat-sh","html_url":"https://github.com/habitat-sh","followers_url":"https://api.github.com/users/habitat-sh/followers","following_url":"https://api.github.com/users/habitat-sh/following{/other_user}","gists_url":"https://api.github.com/users/habitat-sh/gists{/gist_id}","starred_url":"https://api.github.com/users/habitat-sh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/habitat-sh/subscriptions","organizations_url":"https://api.github.com/users/habitat-sh/orgs","repos_url":"https://api.github.com/users/habitat-sh/repos","events_url":"https://api.github.com/users/habitat-sh/events{/privacy}","received_events_url":"https://api.github.com/users/habitat-sh/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/habitat-sh/habitat","description":"Modern applications with built-in automation","fork":false,"url":"https://api.github.com/repos/habitat-sh/habitat","forks_url":"https://api.github.com/repos/habitat-sh/habitat/forks","keys_url":"https://api.github.com/repos/habitat-sh/habitat/keys{/key_id}","collaborators_url":"https://api.github.com/repos/habitat-sh/habitat/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/habitat-sh/habitat/teams","hooks_url":"https://api.github.com/repos/habitat-sh/habitat/hooks","issue_events_url":"https://api.github.com/repos/habitat-sh/habitat/issues/events{/number}","events_url":"https://api.github.com/repos/habitat-sh/habitat/events","assignees_url":"https://api.github.com/repos/habitat-sh/habitat/assignees{/user}","branches_url":"https://api.github.com/repos/habitat-sh/habitat/branches{/branch}","tags_url":"https://api.github.com/repos/habitat-sh/habitat/tags","blobs_url":"https://api.github.com/repos/habitat-sh/habitat/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/habitat-sh/habitat/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/habitat-sh/habitat/git/refs{/sha}","trees_url":"https://api.github.com/repos/habitat-sh/habitat/git/trees{/sha}","statuses_url":"https://api.github.com/repos/habitat-sh/habitat/statuses/{sha}","languages_url":"https://api.github.com/repos/habitat-sh/habitat/languages","stargazers_url":"https://api.github.com/repos/habitat-sh/habitat/stargazers","contributors_url":"https://api.github.com/repos/habitat-sh/habitat/contributors","subscribers_url":"https://api.github.com/repos/habitat-sh/habitat/subscribers","subscription_url":"https://api.github.com/repos/habitat-sh/habitat/subscription","commits_url":"https://api.github.com/repos/habitat-sh/habitat/commits{/sha}","git_commits_url":"https://api.github.com/repos/habitat-sh/habitat/git/commits{/sha}","comments_url":"https://api.github.com/repos/habitat-sh/habitat/comments{/number}","issue_comment_url":"https://api.github.com/repos/habitat-sh/habitat/issues/comments{/number}","contents_url":"https://api.github.com/repos/habitat-sh/habitat/contents/{+path}","compare_url":"https://api.github.com/repos/habitat-sh/habitat/compare/{base}...{head}","merges_url":"https://api.github.com/repos/habitat-sh/habitat/merges","archive_url":"https://api.github.com/repos/habitat-sh/habitat/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/habitat-sh/habitat/downloads","issues_url":"https://api.github.com/repos/habitat-sh/habitat/issues{/number}","pulls_url":"https://api.github.com/repos/habitat-sh/habitat/pulls{/number}","milestones_url":"https://api.github.com/repos/habitat-sh/habitat/milestones{/number}","notifications_url":"https://api.github.com/repos/habitat-sh/habitat/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/habitat-sh/habitat/labels{/name}","releases_url":"https://api.github.com/repos/habitat-sh/habitat/releases{/id}","deployments_url":"https://api.github.com/repos/habitat-sh/habitat/deployments","created_at":"2015-05-22T22:47:14Z","updated_at":"2018-09-18T19:39:43Z","pushed_at":"2018-09-18T20:46:43Z","git_url":"git://github.com/habitat-sh/habitat.git","ssh_url":"git@github.com:habitat-sh/habitat.git","clone_url":"https://github.com/habitat-sh/habitat.git","svn_url":"https://github.com/habitat-sh/habitat","homepage":"https://www.habitat.sh","size":93549,"stargazers_count":1683,"watchers_count":1683,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":259,"mirror_url":null,"archived":false,"open_issues_count":489,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":259,"open_issues":489,"watchers":1683,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/5616"},"html":{"href":"https://github.com/habitat-sh/habitat/pull/5616"},"issue":{"href":"https://api.github.com/repos/habitat-sh/habitat/issues/5616"},"comments":{"href":"https://api.github.com/repos/habitat-sh/habitat/issues/5616/comments"},"review_comments":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/5616/comments"},"review_comment":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/5616/commits"},"statuses":{"href":"https://api.github.com/repos/habitat-sh/habitat/statuses/488093ae8880663a4989a08d0a28a0ecb2374153"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"baumanj"}}