{"action":"created","comment":{"url":"https://api.github.com/repos/habitat-sh/habitat/pulls/comments/198661835","pull_request_review_id":132589430,"id":198661835,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5ODY2MTgzNQ==","diff_hunk":"@@ -0,0 +1,138 @@\n+section\n+ h1 Connect to a Database\n+\n+ p This topic covers the following areas:\n+\n+ ul\n+  li #{link_to 'Setting service bindings','#setting-bindings'} \n+  li #{link_to 'Defining database connection logic','#connection-logic'}\n+  li #{link_to 'Connecting to a database running inside the Habitat Studio','#connect-studio'}\n+  li #{link_to 'Connecting to a database running inside a Docker container','#connect-docker'}\n+\n+ h2 <a name=\"setting-bindings\">Setting service bindings</a>\n+\n+ p Service bindings allows runtime configuration values for one service group to be shared with another service group, forming a producer/consumer relationship. When you want to share out configuration data with another service group, you must add the <code>pkg_exports</code> setting to your plan.\n+ \n+ p The following shows how a <code>plan.ps1</code> exports a port key for consuming services, such as a reverse proxy or load balancer.\n+  \n+ = code(:bash) do\n+  |\n+   $pkg_exports=@{\"port\"=\"port\"}\n+\n+ p This will expose the following from the default.toml:\n+\n+ = code(:toml) do\n+   |\n+    port = 8099\n+\n+\n+ p Conversely, if your web application wants to bind to a key, such as a port from a database, you need to either use the <code>pkg_binds</code> or <code>pkg_binds_optional</code> settings in your plan. This requires that you know what keys are exported by the producer service group.\n+\n+ p You can find exported keys by searching for the package at #{link_to 'https://bldr.habitat.sh/#/pkgs/core', 'https://bldr.habitat.sh/#/pkgs/core'} and viewing the manifest for a given release of a package.\n+\n+ .screenshot\n+    img src=\"/images/screenshots/exports_callout.png\"\n+\n+ p If the producer service is running, you can also retrieve this information by connecting to the HTTP API endpoint for the service and filtering the results. The following retrieves the exported keys and their associated configuration values from a running sqlserver service.\n+\n+ = code(:bash) do\n+  |\n+   [HAB-STUDIO] Habitat:\\src> ((Invoke-WebRequest http://127.0.0.1:9631/services/sqlserver/default -UseBasicParsing).Content | ConvertFrom-Json).pkg.exports\n+   instance password     port username\n+   -------- --------     ---- --------\n+   instance app_password port app_user\n+\n+ p Once you have identified the key or keys of the producer that you want to consume in your web application, add that information to your plan file.\n+\n+ = code(:bash) do\n+   |\n+    $pkg_binds=@{ \"database\"=\"username password port\" }\n+\n+ p At this point the first 8 lines of your <code>plan.ps1</code> file (all lines above the build callbacks) should look like the folowing:\n+ = code(:bash) do\n+   |\n+    $pkg_name=\"contosouniversity\"\n+    $pkg_origin=\"myorigin\"\n+    $pkg_version=\"0.1.0\"\n+    $pkg_maintainer=\"The Habitat Maintainers <humans@habitat.sh>\"\n+    $pkg_license=@(\"Apache-2.0\")\n+    $pkg_deps=@(\"core/dsc-core\")\n+    $pkg_build_deps=@(\"core/nuget\")\n+    $pkg_binds=@{\"database\"=\"username password port\"}\n+\n+ p For more examples and information on binding, see #{link_to 'Runtime Binding','/docs/developing-packages#pkg-binds'}.\n+\n+ h2 <a name=\"connection-logic\">Defining database connection logic</a>\n+\n+ p At the most basic level, connecting to a database like SQL Server from a ASP.NET application requires setting the connection string parameters in the application's <code>web.config</code> file. One way to do this is to maintain your <code>web.config</code> as a templated configuration file in your plan's <code>config</code> directory. You can then link that file at runtime to your application root. Let's move our <code>web.config</code> from the root of our application source and into our <code>habitat/config</code> folder. We will also need to delete all ASP.NET web.config files from source and remove them from the project's <code>.csproj</code> file as well.\n+\n+ = code(:shell) do\n+   | \n+    PS C:\\contosouniversity> Copy-Item .\\C#\\ContosoUniversity\\Web.config .\\habitat\\config\\\n+    PS C:\\contosouniversity> Remove-Item .\\C#\\ContosoUniversity\\Web*.config\n+    PS C:\\contosouniversity> [xml]$xml = Get-Content .\\C#\\ContosoUniversity\\ContosoUniversity.csproj\n+    PS C:\\contosouniversity> $nodes = $xml.Project.ItemGroup.Content | ? { $_.Include -like \"Web.*\" }\n+    PS C:\\contosouniversity> $nodes | % { $_.ParentNode.RemoveChild($_) }\n+    PS C:\\contosouniversity> $f = Resolve-Path .\\C#\\ContosoUniversity\\ContosoUniversity.csproj\n+    PS C:\\contosouniversity> $xml.Save($f)\n+\n+ p By placing the file in the <code>config</code> folder, it will get copied into the <code>/hab/svc/contosouniversity/config</code> directory at runtime and rendered with the appropriate values. We can then use Handlebars helper logic and the <code>Data Source</code>, <code>User ID</code>, and <code>Password</code> values will be derived from the database service binding information gossipped around the Supervisor ring between the web application and database service groups. Let's change the <code>connectionStrings</code> element of our <code>habitat/config/web.config</code> file to the following:\n+\n+ = code(:xml) do\n+   |\n+    <connectionStrings>\n+      <add name=\"SchoolContext\" connectionString=\"Data Source={{bind.database.first.sys.ip}},{{bind.database.first.cfg.port}};Initial Catalog=ContosoUniversity2;User ID={{bind.database.first.cfg.username}};Password={{bind.database.first.cfg.password}};\" providerName=\"System.Data.SqlClient\" />\n+    </connectionStrings>\n+\n+ p One last thing to be done in order for our templatized <code>web.config</code> to be seen by the ASP.NET runtime is to link the Supervisor rendered file to the root of our application which is where ASP.NET expects it to be. We can do this by adding the following to our <code>init</code> hook:\n+\n+ = code(:bash) do\n+   |\n+    Set-Location {{pkg.svc_path}}\\var\n+    New-Item -Name Web.config -ItemType SymbolicLink -target \"{{pkg.svc_config_path}}/Web.config\" -Force | Out-Null\n+\n+ h2 <a name=\"connect-studio\">Connecting to a database running inside the studio</a>\n+\n+ p This is the easiest scenario and useful for local testing of service binding between your database and application package. It includes three steps:\n+\n+ ul\n+  li Load SQL Server in the Supervisor\n+  li Build our plan\n+  li Load our package and bind it to SQL Server\n+\n+ = code(:bash) do\n+  |\n+   [HAB-STUDIO] Habitat:\\src> hab svc load core/sqlserver\n+   [HAB-STUDIO] Habitat:\\src> build\n+   [HAB-STUDIO] Habitat:\\src> hab svc load myorigin/contosouniversity --bind database:sqlserver.default\n+\n+ blockquote\n+  p <b>Note</b> The first time that the <code>core/sqlserver</code> package is loaded and started, it may take several minutes to initialize because its <code>init</code> hook actually runs the SQL Server installer. This will cause the third command above that loads our application to hang until that initialization completes.\n+\n+ h2 <a name=\"connect-docker\">Connecting to a database running inside a Docker container</a>\n+\n+ p Export the <code>core/sqlserver</code> package to a Docker image and then export your application's build <code>.hart</code> file.\n+\n+ = code(:studio) do\n+   |\n+    PS C:\\contosouniversity> hab pkg export docker core/sqlserver\n+    PS C:\\contosouniversity> hab pkg export docker .\\habitat\\results\\myorigin-contosouniversity-0.1.0-20180621125530-x86_64-windows.hart\n+\n+ blockquote\n+  p <b>Note</b> You can only export docker images in an environment where a docker engine is running. Therefore you cannot export inside of a container based studio. You must exit the studio and export inside your docker host environment.","path":"www/source/demo/windows/steps/9.html.slim","position":122,"original_position":122,"commit_id":"96a0543b4cb1f3ff72ae27a0d31c3156e2160b22","original_commit_id":"96a0543b4cb1f3ff72ae27a0d31c3156e2160b22","user":{"login":"cnunciato","id":274700,"node_id":"MDQ6VXNlcjI3NDcwMA==","avatar_url":"https://avatars3.githubusercontent.com/u/274700?v=4","gravatar_id":"","url":"https://api.github.com/users/cnunciato","html_url":"https://github.com/cnunciato","followers_url":"https://api.github.com/users/cnunciato/followers","following_url":"https://api.github.com/users/cnunciato/following{/other_user}","gists_url":"https://api.github.com/users/cnunciato/gists{/gist_id}","starred_url":"https://api.github.com/users/cnunciato/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cnunciato/subscriptions","organizations_url":"https://api.github.com/users/cnunciato/orgs","repos_url":"https://api.github.com/users/cnunciato/repos","events_url":"https://api.github.com/users/cnunciato/events{/privacy}","received_events_url":"https://api.github.com/users/cnunciato/received_events","type":"User","site_admin":false},"body":"Capitalize the `docker`s.","created_at":"2018-06-27T22:35:05Z","updated_at":"2018-06-27T22:39:36Z","html_url":"https://github.com/habitat-sh/habitat/pull/5256#discussion_r198661835","pull_request_url":"https://api.github.com/repos/habitat-sh/habitat/pulls/5256","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/comments/198661835"},"html":{"href":"https://github.com/habitat-sh/habitat/pull/5256#discussion_r198661835"},"pull_request":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/5256"}}},"pull_request":{"url":"https://api.github.com/repos/habitat-sh/habitat/pulls/5256","id":197288732,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk3Mjg4NzMy","html_url":"https://github.com/habitat-sh/habitat/pull/5256","diff_url":"https://github.com/habitat-sh/habitat/pull/5256.diff","patch_url":"https://github.com/habitat-sh/habitat/pull/5256.patch","issue_url":"https://api.github.com/repos/habitat-sh/habitat/issues/5256","number":5256,"state":"open","locked":false,"title":"adding Windows ASP.NET tutorial","user":{"login":"mwrock","id":655165,"node_id":"MDQ6VXNlcjY1NTE2NQ==","avatar_url":"https://avatars2.githubusercontent.com/u/655165?v=4","gravatar_id":"","url":"https://api.github.com/users/mwrock","html_url":"https://github.com/mwrock","followers_url":"https://api.github.com/users/mwrock/followers","following_url":"https://api.github.com/users/mwrock/following{/other_user}","gists_url":"https://api.github.com/users/mwrock/gists{/gist_id}","starred_url":"https://api.github.com/users/mwrock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mwrock/subscriptions","organizations_url":"https://api.github.com/users/mwrock/orgs","repos_url":"https://api.github.com/users/mwrock/repos","events_url":"https://api.github.com/users/mwrock/events{/privacy}","received_events_url":"https://api.github.com/users/mwrock/received_events","type":"User","site_admin":false},"body":"This basically adds back the asp.net tutorial previously on the site and changes it to meke it more applicable to most Windows environments where SQL Server is used with ASP.NET \"full\" framework.\r\n\r\nI moved the tutorial into the `demos` folder with the rest of the tutorials and followed the same numbered step page naming format. I also removed a few dead partials.\r\n\r\nThe weirdest (most unattractive) part of this PR is how the Windows Tutorial is linked on the \"learn\" page. There used to be three boxes on the second row and now there is only one so the symmetry is completely lost.\r\n \r\nfixes #5160 \r\n\r\nSigned-off-by: mwrock <matt@mattwrock.com>","created_at":"2018-06-26T03:01:16Z","updated_at":"2018-06-27T22:39:36Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7323d668413e8d03d0d2627828bd7be1bb2d5abd","assignee":null,"assignees":[],"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":"mgamini","id":223407,"node_id":"MDQ6VXNlcjIyMzQwNw==","avatar_url":"https://avatars0.githubusercontent.com/u/223407?v=4","gravatar_id":"","url":"https://api.github.com/users/mgamini","html_url":"https://github.com/mgamini","followers_url":"https://api.github.com/users/mgamini/followers","following_url":"https://api.github.com/users/mgamini/following{/other_user}","gists_url":"https://api.github.com/users/mgamini/gists{/gist_id}","starred_url":"https://api.github.com/users/mgamini/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mgamini/subscriptions","organizations_url":"https://api.github.com/users/mgamini/orgs","repos_url":"https://api.github.com/users/mgamini/repos","events_url":"https://api.github.com/users/mgamini/events{/privacy}","received_events_url":"https://api.github.com/users/mgamini/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/habitat-sh/habitat/pulls/5256/commits","review_comments_url":"https://api.github.com/repos/habitat-sh/habitat/pulls/5256/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/5256/comments","statuses_url":"https://api.github.com/repos/habitat-sh/habitat/statuses/96a0543b4cb1f3ff72ae27a0d31c3156e2160b22","head":{"label":"habitat-sh:win_tut","ref":"win_tut","sha":"96a0543b4cb1f3ff72ae27a0d31c3156e2160b22","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","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},"private":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-06-27T13:00:10Z","pushed_at":"2018-06-27T22:22:11Z","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":89639,"stargazers_count":1556,"watchers_count":1556,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":246,"mirror_url":null,"archived":false,"open_issues_count":403,"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":246,"open_issues":403,"watchers":1556,"default_branch":"master"}},"base":{"label":"habitat-sh:master","ref":"master","sha":"d1f76f80ed8f0402b9a8fd8701b840f7144751fa","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","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},"private":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-06-27T13:00:10Z","pushed_at":"2018-06-27T22:22:11Z","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":89639,"stargazers_count":1556,"watchers_count":1556,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":246,"mirror_url":null,"archived":false,"open_issues_count":403,"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":246,"open_issues":403,"watchers":1556,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/5256"},"html":{"href":"https://github.com/habitat-sh/habitat/pull/5256"},"issue":{"href":"https://api.github.com/repos/habitat-sh/habitat/issues/5256"},"comments":{"href":"https://api.github.com/repos/habitat-sh/habitat/issues/5256/comments"},"review_comments":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/5256/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/5256/commits"},"statuses":{"href":"https://api.github.com/repos/habitat-sh/habitat/statuses/96a0543b4cb1f3ff72ae27a0d31c3156e2160b22"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"cnunciato"}}