{"action":"created","comment":{"url":"https://api.github.com/repos/LibrePCB/LibrePCB/pulls/comments/216748451","pull_request_review_id":154304293,"id":216748451,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNjc0ODQ1MQ==","diff_hunk":"@@ -0,0 +1,155 @@\n+Release Workflow {#doc_release_workflow}\n+========================================\n+\n+[TOC]\n+\n+This page describes how releases of LibrePCB are created and maintained.\n+\n+\n+# Application and File Format Versioning {#doc_release_workflow_versioning}\n+\n+The file format of workspaces, libraries and projects is a very central part of\n+LibrePCB, see @ref doc_versioning for details how it's implemented and how we\n+handle forward/backward compatibility.\n+\n+For the application we use version numbers according [semantic versioning]\n+\\(MAJOR.MINOR.PATCH, e.g. \"1.2.3\"). So every increment of the major number means\n+a breaking change, which is a file format change in our case (we consider *any*\n+file format change as breaking because we don't provide [forward compatibility]\n+at all).\n+\n+As the file format also needs a version number, we just use the application's\n+major version as the file format version. For example the application version\n+\"1.2\" has the file format \"1\", and \"13.37.42\" has file format \"13\". Please note\n+the special case of 0.x versions where the second number denotes the major\n+version, so the application version \"0.1.2\" has file format \"0.1\". This way, the\n+file format can always be determined by the application's version number.\n+\n+Given that versioning system, it's clear that any application with the same\n+major version uses exactly the same file format. And for developers it's clear\n+that when changing something in the file format, the application's major version\n+*must* be incremented.\n+\n+\n+# Preprocessor Defines {#doc_release_workflow_defines}\n+\n+The application version is compiled into the binary with the preprocessor define\n+`APP_VERSION` and the file format version with the define `FILE_FORMAT_VERSION`.\n+Whether the file format is stable or not is controlled by the define\n+`FILE_FORMAT_STABLE`. See following chapters for details.\n+\n+\n+# Git Branches {#doc_release_workflow_branches}\n+\n+The continuous development happens on feature/bugfix branches (or pull requests),\n+which are merged into the `master` branch as soon as they are finished. As new\n+features sometimes also introduce file format changes, the `master` branch must\n+always be considered to contain the (unstable) *next* major version of the\n+application. For example if the last stable release was version \"2.3.4\", the\n+`master` must immediately be considered as version \"3.0.0-unstable\".\n+\n+This also means that on the `master` branch we cannot provide updates for\n+already released versions. So we have to provide such updates in release\n+branches. For every major version we create a release branch, which is then used\n+for *any* update for that major version. For example on the branch `release/2`\n+we would provide the releases \"2.0\", \"2.0.1\" (bugfix) and \"2.1.0\" (new feature).\n+\n+![Git Branches](release_workflow_diagram.png)\n+\n+Features and bugfixes which do not affect the file format may be cherry-picked\n+from `master` to release branches. This way we can publish updates for the last\n+officially released application version while the next major version is still in\n+development. Generally we do *not* maintain older releases than the last stable\n+release because this would be too much effort. So for example as soon as the\n+version \"0.2.0\" is released, the version \"0.1.x\" is no longer maintained.\n+\n+\n+# Git Tags\n+\n+For every officially released version we create a Git tag on the corresponding\n+release branch. The tag name contains all three numbers of the application's\n+version number. Examples: \"0.1.0-rc1\", \"0.1.0\", \"1.2.0\", \"1.2.1\"","path":"dev/doxygen/pages/release_workflow.md","position":71,"original_position":71,"commit_id":"5671c2acf5407089f6822510492476fa137046cf","original_commit_id":"5671c2acf5407089f6822510492476fa137046cf","user":{"login":"dbrgn","id":105168,"node_id":"MDQ6VXNlcjEwNTE2OA==","avatar_url":"https://avatars1.githubusercontent.com/u/105168?v=4","gravatar_id":"","url":"https://api.github.com/users/dbrgn","html_url":"https://github.com/dbrgn","followers_url":"https://api.github.com/users/dbrgn/followers","following_url":"https://api.github.com/users/dbrgn/following{/other_user}","gists_url":"https://api.github.com/users/dbrgn/gists{/gist_id}","starred_url":"https://api.github.com/users/dbrgn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dbrgn/subscriptions","organizations_url":"https://api.github.com/users/dbrgn/orgs","repos_url":"https://api.github.com/users/dbrgn/repos","events_url":"https://api.github.com/users/dbrgn/events{/privacy}","received_events_url":"https://api.github.com/users/dbrgn/received_events","type":"User","site_admin":false},"body":"Mainly because - in contrast to tags - the commit signature is rendered/displayed on GitHub :slightly_smiling_face: Also, because commits are harder to manipulate than commits.","created_at":"2018-09-11T17:11:52Z","updated_at":"2018-09-11T17:11:53Z","html_url":"https://github.com/LibrePCB/LibrePCB/pull/326#discussion_r216748451","pull_request_url":"https://api.github.com/repos/LibrePCB/LibrePCB/pulls/326","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/LibrePCB/LibrePCB/pulls/comments/216748451"},"html":{"href":"https://github.com/LibrePCB/LibrePCB/pull/326#discussion_r216748451"},"pull_request":{"href":"https://api.github.com/repos/LibrePCB/LibrePCB/pulls/326"}},"in_reply_to_id":216582000},"pull_request":{"url":"https://api.github.com/repos/LibrePCB/LibrePCB/pulls/326","id":214170723,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE0MTcwNzIz","html_url":"https://github.com/LibrePCB/LibrePCB/pull/326","diff_url":"https://github.com/LibrePCB/LibrePCB/pull/326.diff","patch_url":"https://github.com/LibrePCB/LibrePCB/pull/326.patch","issue_url":"https://api.github.com/repos/LibrePCB/LibrePCB/issues/326","number":326,"state":"open","locked":false,"title":"Doxygen: Add release workflow documentation","user":{"login":"ubruhin","id":5374821,"node_id":"MDQ6VXNlcjUzNzQ4MjE=","avatar_url":"https://avatars1.githubusercontent.com/u/5374821?v=4","gravatar_id":"","url":"https://api.github.com/users/ubruhin","html_url":"https://github.com/ubruhin","followers_url":"https://api.github.com/users/ubruhin/followers","following_url":"https://api.github.com/users/ubruhin/following{/other_user}","gists_url":"https://api.github.com/users/ubruhin/gists{/gist_id}","starred_url":"https://api.github.com/users/ubruhin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ubruhin/subscriptions","organizations_url":"https://api.github.com/users/ubruhin/orgs","repos_url":"https://api.github.com/users/ubruhin/repos","events_url":"https://api.github.com/users/ubruhin/events{/privacy}","received_events_url":"https://api.github.com/users/ubruhin/received_events","type":"User","site_admin":false},"body":"Our first release should be ready soon, so we need a strategy how to create and maintain official releases :) See #188.\r\n\r\nThis is my idea for a release workflow. Any thoughts about it?\r\n\r\nRendered: https://doxygen.librepcb.org/_branches/add-release-workflow-documentation/da/dbc/doc_release_workflow.html","created_at":"2018-09-09T23:18:52Z","updated_at":"2018-09-11T17:11:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c3ae8251484549bf2043f24f2574d95ed117423d","assignee":{"login":"ubruhin","id":5374821,"node_id":"MDQ6VXNlcjUzNzQ4MjE=","avatar_url":"https://avatars1.githubusercontent.com/u/5374821?v=4","gravatar_id":"","url":"https://api.github.com/users/ubruhin","html_url":"https://github.com/ubruhin","followers_url":"https://api.github.com/users/ubruhin/followers","following_url":"https://api.github.com/users/ubruhin/following{/other_user}","gists_url":"https://api.github.com/users/ubruhin/gists{/gist_id}","starred_url":"https://api.github.com/users/ubruhin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ubruhin/subscriptions","organizations_url":"https://api.github.com/users/ubruhin/orgs","repos_url":"https://api.github.com/users/ubruhin/repos","events_url":"https://api.github.com/users/ubruhin/events{/privacy}","received_events_url":"https://api.github.com/users/ubruhin/received_events","type":"User","site_admin":false},"assignees":[{"login":"ubruhin","id":5374821,"node_id":"MDQ6VXNlcjUzNzQ4MjE=","avatar_url":"https://avatars1.githubusercontent.com/u/5374821?v=4","gravatar_id":"","url":"https://api.github.com/users/ubruhin","html_url":"https://github.com/ubruhin","followers_url":"https://api.github.com/users/ubruhin/followers","following_url":"https://api.github.com/users/ubruhin/following{/other_user}","gists_url":"https://api.github.com/users/ubruhin/gists{/gist_id}","starred_url":"https://api.github.com/users/ubruhin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ubruhin/subscriptions","organizations_url":"https://api.github.com/users/ubruhin/orgs","repos_url":"https://api.github.com/users/ubruhin/repos","events_url":"https://api.github.com/users/ubruhin/events{/privacy}","received_events_url":"https://api.github.com/users/ubruhin/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":405773787,"node_id":"MDU6TGFiZWw0MDU3NzM3ODc=","url":"https://api.github.com/repos/LibrePCB/LibrePCB/labels/documentation","name":"documentation","color":"c5def5","default":false}],"milestone":{"url":"https://api.github.com/repos/LibrePCB/LibrePCB/milestones/1","html_url":"https://github.com/LibrePCB/LibrePCB/milestone/1","labels_url":"https://api.github.com/repos/LibrePCB/LibrePCB/milestones/1/labels","id":1218786,"node_id":"MDk6TWlsZXN0b25lMTIxODc4Ng==","number":1,"title":"0.1","description":"First official release of LibrePCB with very basic functionality.","creator":{"login":"ubruhin","id":5374821,"node_id":"MDQ6VXNlcjUzNzQ4MjE=","avatar_url":"https://avatars1.githubusercontent.com/u/5374821?v=4","gravatar_id":"","url":"https://api.github.com/users/ubruhin","html_url":"https://github.com/ubruhin","followers_url":"https://api.github.com/users/ubruhin/followers","following_url":"https://api.github.com/users/ubruhin/following{/other_user}","gists_url":"https://api.github.com/users/ubruhin/gists{/gist_id}","starred_url":"https://api.github.com/users/ubruhin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ubruhin/subscriptions","organizations_url":"https://api.github.com/users/ubruhin/orgs","repos_url":"https://api.github.com/users/ubruhin/repos","events_url":"https://api.github.com/users/ubruhin/events{/privacy}","received_events_url":"https://api.github.com/users/ubruhin/received_events","type":"User","site_admin":false},"open_issues":4,"closed_issues":102,"state":"open","created_at":"2015-07-21T18:50:21Z","updated_at":"2018-09-09T23:18:52Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/LibrePCB/LibrePCB/pulls/326/commits","review_comments_url":"https://api.github.com/repos/LibrePCB/LibrePCB/pulls/326/comments","review_comment_url":"https://api.github.com/repos/LibrePCB/LibrePCB/pulls/comments{/number}","comments_url":"https://api.github.com/repos/LibrePCB/LibrePCB/issues/326/comments","statuses_url":"https://api.github.com/repos/LibrePCB/LibrePCB/statuses/5671c2acf5407089f6822510492476fa137046cf","head":{"label":"LibrePCB:add-release-workflow-documentation","ref":"add-release-workflow-documentation","sha":"5671c2acf5407089f6822510492476fa137046cf","user":{"login":"LibrePCB","id":12969908,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyOTY5OTA4","avatar_url":"https://avatars3.githubusercontent.com/u/12969908?v=4","gravatar_id":"","url":"https://api.github.com/users/LibrePCB","html_url":"https://github.com/LibrePCB","followers_url":"https://api.github.com/users/LibrePCB/followers","following_url":"https://api.github.com/users/LibrePCB/following{/other_user}","gists_url":"https://api.github.com/users/LibrePCB/gists{/gist_id}","starred_url":"https://api.github.com/users/LibrePCB/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LibrePCB/subscriptions","organizations_url":"https://api.github.com/users/LibrePCB/orgs","repos_url":"https://api.github.com/users/LibrePCB/repos","events_url":"https://api.github.com/users/LibrePCB/events{/privacy}","received_events_url":"https://api.github.com/users/LibrePCB/received_events","type":"Organization","site_admin":false},"repo":{"id":37735755,"node_id":"MDEwOlJlcG9zaXRvcnkzNzczNTc1NQ==","name":"LibrePCB","full_name":"LibrePCB/LibrePCB","owner":{"login":"LibrePCB","id":12969908,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyOTY5OTA4","avatar_url":"https://avatars3.githubusercontent.com/u/12969908?v=4","gravatar_id":"","url":"https://api.github.com/users/LibrePCB","html_url":"https://github.com/LibrePCB","followers_url":"https://api.github.com/users/LibrePCB/followers","following_url":"https://api.github.com/users/LibrePCB/following{/other_user}","gists_url":"https://api.github.com/users/LibrePCB/gists{/gist_id}","starred_url":"https://api.github.com/users/LibrePCB/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LibrePCB/subscriptions","organizations_url":"https://api.github.com/users/LibrePCB/orgs","repos_url":"https://api.github.com/users/LibrePCB/repos","events_url":"https://api.github.com/users/LibrePCB/events{/privacy}","received_events_url":"https://api.github.com/users/LibrePCB/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/LibrePCB/LibrePCB","description":"A powerful, innovative and intuitive EDA tool for everyone!","fork":false,"url":"https://api.github.com/repos/LibrePCB/LibrePCB","forks_url":"https://api.github.com/repos/LibrePCB/LibrePCB/forks","keys_url":"https://api.github.com/repos/LibrePCB/LibrePCB/keys{/key_id}","collaborators_url":"https://api.github.com/repos/LibrePCB/LibrePCB/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/LibrePCB/LibrePCB/teams","hooks_url":"https://api.github.com/repos/LibrePCB/LibrePCB/hooks","issue_events_url":"https://api.github.com/repos/LibrePCB/LibrePCB/issues/events{/number}","events_url":"https://api.github.com/repos/LibrePCB/LibrePCB/events","assignees_url":"https://api.github.com/repos/LibrePCB/LibrePCB/assignees{/user}","branches_url":"https://api.github.com/repos/LibrePCB/LibrePCB/branches{/branch}","tags_url":"https://api.github.com/repos/LibrePCB/LibrePCB/tags","blobs_url":"https://api.github.com/repos/LibrePCB/LibrePCB/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/LibrePCB/LibrePCB/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/LibrePCB/LibrePCB/git/refs{/sha}","trees_url":"https://api.github.com/repos/LibrePCB/LibrePCB/git/trees{/sha}","statuses_url":"https://api.github.com/repos/LibrePCB/LibrePCB/statuses/{sha}","languages_url":"https://api.github.com/repos/LibrePCB/LibrePCB/languages","stargazers_url":"https://api.github.com/repos/LibrePCB/LibrePCB/stargazers","contributors_url":"https://api.github.com/repos/LibrePCB/LibrePCB/contributors","subscribers_url":"https://api.github.com/repos/LibrePCB/LibrePCB/subscribers","subscription_url":"https://api.github.com/repos/LibrePCB/LibrePCB/subscription","commits_url":"https://api.github.com/repos/LibrePCB/LibrePCB/commits{/sha}","git_commits_url":"https://api.github.com/repos/LibrePCB/LibrePCB/git/commits{/sha}","comments_url":"https://api.github.com/repos/LibrePCB/LibrePCB/comments{/number}","issue_comment_url":"https://api.github.com/repos/LibrePCB/LibrePCB/issues/comments{/number}","contents_url":"https://api.github.com/repos/LibrePCB/LibrePCB/contents/{+path}","compare_url":"https://api.github.com/repos/LibrePCB/LibrePCB/compare/{base}...{head}","merges_url":"https://api.github.com/repos/LibrePCB/LibrePCB/merges","archive_url":"https://api.github.com/repos/LibrePCB/LibrePCB/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/LibrePCB/LibrePCB/downloads","issues_url":"https://api.github.com/repos/LibrePCB/LibrePCB/issues{/number}","pulls_url":"https://api.github.com/repos/LibrePCB/LibrePCB/pulls{/number}","milestones_url":"https://api.github.com/repos/LibrePCB/LibrePCB/milestones{/number}","notifications_url":"https://api.github.com/repos/LibrePCB/LibrePCB/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/LibrePCB/LibrePCB/labels{/name}","releases_url":"https://api.github.com/repos/LibrePCB/LibrePCB/releases{/id}","deployments_url":"https://api.github.com/repos/LibrePCB/LibrePCB/deployments","created_at":"2015-06-19T17:21:08Z","updated_at":"2018-09-11T17:07:04Z","pushed_at":"2018-09-10T20:36:57Z","git_url":"git://github.com/LibrePCB/LibrePCB.git","ssh_url":"git@github.com:LibrePCB/LibrePCB.git","clone_url":"https://github.com/LibrePCB/LibrePCB.git","svn_url":"https://github.com/LibrePCB/LibrePCB","homepage":"http://librepcb.org","size":40669,"stargazers_count":250,"watchers_count":250,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":47,"mirror_url":null,"archived":false,"open_issues_count":50,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0","node_id":"MDc6TGljZW5zZTk="},"forks":47,"open_issues":50,"watchers":250,"default_branch":"master"}},"base":{"label":"LibrePCB:master","ref":"master","sha":"fa0a67ee9017a1461fd5e2671803d5f90d452ecd","user":{"login":"LibrePCB","id":12969908,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyOTY5OTA4","avatar_url":"https://avatars3.githubusercontent.com/u/12969908?v=4","gravatar_id":"","url":"https://api.github.com/users/LibrePCB","html_url":"https://github.com/LibrePCB","followers_url":"https://api.github.com/users/LibrePCB/followers","following_url":"https://api.github.com/users/LibrePCB/following{/other_user}","gists_url":"https://api.github.com/users/LibrePCB/gists{/gist_id}","starred_url":"https://api.github.com/users/LibrePCB/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LibrePCB/subscriptions","organizations_url":"https://api.github.com/users/LibrePCB/orgs","repos_url":"https://api.github.com/users/LibrePCB/repos","events_url":"https://api.github.com/users/LibrePCB/events{/privacy}","received_events_url":"https://api.github.com/users/LibrePCB/received_events","type":"Organization","site_admin":false},"repo":{"id":37735755,"node_id":"MDEwOlJlcG9zaXRvcnkzNzczNTc1NQ==","name":"LibrePCB","full_name":"LibrePCB/LibrePCB","owner":{"login":"LibrePCB","id":12969908,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyOTY5OTA4","avatar_url":"https://avatars3.githubusercontent.com/u/12969908?v=4","gravatar_id":"","url":"https://api.github.com/users/LibrePCB","html_url":"https://github.com/LibrePCB","followers_url":"https://api.github.com/users/LibrePCB/followers","following_url":"https://api.github.com/users/LibrePCB/following{/other_user}","gists_url":"https://api.github.com/users/LibrePCB/gists{/gist_id}","starred_url":"https://api.github.com/users/LibrePCB/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LibrePCB/subscriptions","organizations_url":"https://api.github.com/users/LibrePCB/orgs","repos_url":"https://api.github.com/users/LibrePCB/repos","events_url":"https://api.github.com/users/LibrePCB/events{/privacy}","received_events_url":"https://api.github.com/users/LibrePCB/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/LibrePCB/LibrePCB","description":"A powerful, innovative and intuitive EDA tool for everyone!","fork":false,"url":"https://api.github.com/repos/LibrePCB/LibrePCB","forks_url":"https://api.github.com/repos/LibrePCB/LibrePCB/forks","keys_url":"https://api.github.com/repos/LibrePCB/LibrePCB/keys{/key_id}","collaborators_url":"https://api.github.com/repos/LibrePCB/LibrePCB/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/LibrePCB/LibrePCB/teams","hooks_url":"https://api.github.com/repos/LibrePCB/LibrePCB/hooks","issue_events_url":"https://api.github.com/repos/LibrePCB/LibrePCB/issues/events{/number}","events_url":"https://api.github.com/repos/LibrePCB/LibrePCB/events","assignees_url":"https://api.github.com/repos/LibrePCB/LibrePCB/assignees{/user}","branches_url":"https://api.github.com/repos/LibrePCB/LibrePCB/branches{/branch}","tags_url":"https://api.github.com/repos/LibrePCB/LibrePCB/tags","blobs_url":"https://api.github.com/repos/LibrePCB/LibrePCB/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/LibrePCB/LibrePCB/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/LibrePCB/LibrePCB/git/refs{/sha}","trees_url":"https://api.github.com/repos/LibrePCB/LibrePCB/git/trees{/sha}","statuses_url":"https://api.github.com/repos/LibrePCB/LibrePCB/statuses/{sha}","languages_url":"https://api.github.com/repos/LibrePCB/LibrePCB/languages","stargazers_url":"https://api.github.com/repos/LibrePCB/LibrePCB/stargazers","contributors_url":"https://api.github.com/repos/LibrePCB/LibrePCB/contributors","subscribers_url":"https://api.github.com/repos/LibrePCB/LibrePCB/subscribers","subscription_url":"https://api.github.com/repos/LibrePCB/LibrePCB/subscription","commits_url":"https://api.github.com/repos/LibrePCB/LibrePCB/commits{/sha}","git_commits_url":"https://api.github.com/repos/LibrePCB/LibrePCB/git/commits{/sha}","comments_url":"https://api.github.com/repos/LibrePCB/LibrePCB/comments{/number}","issue_comment_url":"https://api.github.com/repos/LibrePCB/LibrePCB/issues/comments{/number}","contents_url":"https://api.github.com/repos/LibrePCB/LibrePCB/contents/{+path}","compare_url":"https://api.github.com/repos/LibrePCB/LibrePCB/compare/{base}...{head}","merges_url":"https://api.github.com/repos/LibrePCB/LibrePCB/merges","archive_url":"https://api.github.com/repos/LibrePCB/LibrePCB/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/LibrePCB/LibrePCB/downloads","issues_url":"https://api.github.com/repos/LibrePCB/LibrePCB/issues{/number}","pulls_url":"https://api.github.com/repos/LibrePCB/LibrePCB/pulls{/number}","milestones_url":"https://api.github.com/repos/LibrePCB/LibrePCB/milestones{/number}","notifications_url":"https://api.github.com/repos/LibrePCB/LibrePCB/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/LibrePCB/LibrePCB/labels{/name}","releases_url":"https://api.github.com/repos/LibrePCB/LibrePCB/releases{/id}","deployments_url":"https://api.github.com/repos/LibrePCB/LibrePCB/deployments","created_at":"2015-06-19T17:21:08Z","updated_at":"2018-09-11T17:07:04Z","pushed_at":"2018-09-10T20:36:57Z","git_url":"git://github.com/LibrePCB/LibrePCB.git","ssh_url":"git@github.com:LibrePCB/LibrePCB.git","clone_url":"https://github.com/LibrePCB/LibrePCB.git","svn_url":"https://github.com/LibrePCB/LibrePCB","homepage":"http://librepcb.org","size":40669,"stargazers_count":250,"watchers_count":250,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":47,"mirror_url":null,"archived":false,"open_issues_count":50,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0","node_id":"MDc6TGljZW5zZTk="},"forks":47,"open_issues":50,"watchers":250,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/LibrePCB/LibrePCB/pulls/326"},"html":{"href":"https://github.com/LibrePCB/LibrePCB/pull/326"},"issue":{"href":"https://api.github.com/repos/LibrePCB/LibrePCB/issues/326"},"comments":{"href":"https://api.github.com/repos/LibrePCB/LibrePCB/issues/326/comments"},"review_comments":{"href":"https://api.github.com/repos/LibrePCB/LibrePCB/pulls/326/comments"},"review_comment":{"href":"https://api.github.com/repos/LibrePCB/LibrePCB/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/LibrePCB/LibrePCB/pulls/326/commits"},"statuses":{"href":"https://api.github.com/repos/LibrePCB/LibrePCB/statuses/5671c2acf5407089f6822510492476fa137046cf"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"dbrgn"}}