{"action":"opened","number":234,"pull_request":{"url":"https://api.github.com/repos/njomeau/zuluzulu/pulls/234","id":233678926,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMzNjc4OTI2","html_url":"https://github.com/njomeau/zuluzulu/pull/234","diff_url":"https://github.com/njomeau/zuluzulu/pull/234.diff","patch_url":"https://github.com/njomeau/zuluzulu/pull/234.patch","issue_url":"https://api.github.com/repos/njomeau/zuluzulu/issues/234","number":234,"state":"open","locked":false,"title":"Get short description from the memento","user":{"login":"Dahnepfl","id":32305317,"node_id":"MDQ6VXNlcjMyMzA1MzE3","avatar_url":"https://avatars2.githubusercontent.com/u/32305317?v=4","gravatar_id":"","url":"https://api.github.com/users/Dahnepfl","html_url":"https://github.com/Dahnepfl","followers_url":"https://api.github.com/users/Dahnepfl/followers","following_url":"https://api.github.com/users/Dahnepfl/following{/other_user}","gists_url":"https://api.github.com/users/Dahnepfl/gists{/gist_id}","starred_url":"https://api.github.com/users/Dahnepfl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Dahnepfl/subscriptions","organizations_url":"https://api.github.com/users/Dahnepfl/orgs","repos_url":"https://api.github.com/users/Dahnepfl/repos","events_url":"https://api.github.com/users/Dahnepfl/events{/privacy}","received_events_url":"https://api.github.com/users/Dahnepfl/received_events","type":"User","site_admin":false},"body":"```\r\n// Linked list struct\r\ntypedef struct node {\r\n\tint val;\r\n\tstruct node *next;\r\n\tint to_remove;\r\n} node_t;\r\n\r\nomp_lock_t lock;\r\n\r\nnode_t* create_head()\r\n{\r\n\tnode_t* node = malloc(sizeof(node_t));\r\n\tnode->next = NULL;\r\n\tnode->val = INT_MIN;\r\n\t// init the lock\r\n\tomp_init_lock(&lock);\r\n\r\n\treturn node;\r\n}\r\n\r\n/* This function inserts a new given element at the right position of a given linked list.\r\n * It returns 0 on a successful insertion, and -1 if the list already has that value.\r\n */\r\nint insert(node_t *head, int val) {\r\n\tomp_set_lock(&lock);\r\n\r\n\tnode_t *previous, *current;\r\n\tcurrent = head;\r\n\r\n\twhile (current && current->val < val) {\r\n\t\tprevious = current;\r\n\t\tcurrent  = current->next;\r\n\t}\r\n\r\n\tif (current && current->val == val) { // This value already exists!\r\n\t\tomp_unset_lock(&lock);\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t// Here is the right position to insert the new node.\r\n\tnode_t *new_node;\r\n\tnew_node = malloc(sizeof(node_t));\r\n\tnew_node->val = val;\r\n\tnew_node->next = current;\r\n\tnew_node->to_remove = 0;\r\n\r\n\tprevious->next = new_node;\r\n\r\n\tomp_unset_lock(&lock);\r\n\treturn 0;\r\n}\r\n\r\n/* This function removes the specified element of a given linked list.\r\n * The value of that element is returned if the element is found; otherwise it returns -1.\r\n */\r\nint delete(node_t *head, int val) {\r\n\tomp_set_lock(&lock);\r\n\r\n\tnode_t *previous, *current;\r\n\r\n\tif (head->next == NULL) { // The list is empty.\r\n\t\tomp_unset_lock(&lock);\r\n\t\treturn -1;\r\n\t}\r\n\r\n\tprevious = head;\r\n\tcurrent = head->next;\r\n\twhile (current) {\r\n\t\tif (current->val == val) {\r\n\t\t\tprevious->next = current->next;\r\n\t\t\tcurrent->to_remove = 1; // Another system component will free this node later\r\n\t\t\tomp_unset_lock(&lock);\r\n\t\t\treturn val;\r\n\t\t}\r\n\r\n\t\tprevious = current;\r\n\t\tcurrent  = current->next;\r\n\t}\r\n\r\n\tomp_unset_lock(&lock);\r\n\r\n\treturn -1;\r\n}\r\n\r\n\r\n/* This function searches for a specified element in a given linked list.\r\n * It returns zero if the element is found; otherwise it returns -1.\r\n */\r\nint search(node_t *head, int val) {\r\n\tomp_set_lock(&lock);\r\n\r\n\tnode_t *current = head->next;\r\n\r\n\twhile (current) {\r\n\t\tif (current->val == val) {\r\n\t\t\tomp_unset_lock(&lock);\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tcurrent  = current->next;\r\n\t}\r\n\r\n\tomp_unset_lock(&lock);\r\n\r\n\treturn -1;\r\n}\r\n\r\n```\r\n```\r\n// Linked list struct\r\ntypedef struct node {\r\n    int val;\r\n    struct node *next;\r\n\tint to_remove;\r\n\tomp_lock_t lock;\r\n} node_t;\r\n\r\nnode_t* create_head()\r\n{\r\n\tnode_t* node = malloc(sizeof(node_t));\r\n\tnode->next = NULL;\r\n\tnode->val = INT_MIN;\r\n\t// init the lock\r\n\tomp_init_lock(&(node->lock));\r\n\r\n\treturn node;\r\n}\r\n/* This function inserts a new given element at the right position of a given linked list.\r\n * It returns 0 on a successful insertion, and -1 if the list already has that value.\r\n */\r\nint insert(node_t *head, int val) {\r\n\r\n\tnode_t *previous, *current;\r\n\tprevious = head;\r\n\tcurrent = head->next;\r\n\t// we need two lock, the left side and the right side\r\n\t// we need left to add the new node to it\r\n\t// we need the right to make sure it's not modified by an other thread and hold the same value (if we have a modify function for instance).\r\n\tomp_set_lock(&(previous->lock));\r\n\tif(current != NULL) {\r\n\t\tomp_set_lock(&(current->lock));\r\n\t}\r\n\twhile (current && current->val < val) {\r\n\r\n\t\t// release the last one\r\n\t\tomp_unset_lock(&(previous->lock));\r\n\r\n\t\tprevious = current;\r\n\t\tcurrent  = current->next;\r\n\r\n\t\tif(current != NULL) {\r\n\t\t\t// acquire current\r\n\t\t\tomp_set_lock(&(current->lock));\r\n\t\t}\r\n\t}\r\n\r\n\tif(current && current->val == val){\r\n\t\t// This value already exists!\r\n\t\tomp_unset_lock(&(current->lock));\r\n\t\tomp_unset_lock(&(previous->lock));\r\n\t\treturn -1;\r\n\t}\r\n\r\n\t// Here is the right position to insert the new node.\r\n\tnode_t *new_node;\r\n\tnew_node = malloc(sizeof(node_t));\r\n\tnew_node->val = val;\r\n\tnew_node->next = current;\r\n\tnew_node->to_remove = 0;\r\n\r\n\t// init the new node lock\r\n\tomp_init_lock(&(new_node->lock));\r\n\tprevious->next = new_node;\r\n\r\n\tomp_unset_lock(&(previous->lock));\r\n\tif(current != NULL)\r\n\t\tomp_unset_lock(&(current->lock));\r\n\r\n\treturn 0;\r\n}\r\n\r\n\r\n\r\n/* This function removes the specified element of a given linked list.\r\n * The value of that element is returned if the element is found; otherwise it returns -1.\r\n */\r\nint delete(node_t *head, int val) {\r\n\r\n\tnode_t *previous, *current;\r\n\r\n\tif (head->next == NULL) { // The list is empty.\r\n\t\treturn -1;\r\n\t}\r\n\r\n\tprevious = head;\r\n\r\n\t// the current and previous must not be modified by an other thread\r\n\tomp_set_lock(&(previous->lock));\r\n\r\n\tcurrent = head->next;\r\n\r\n\twhile (current) {\r\n\t\t// acquire current\r\n\t\t// curent->next should be correct so we need a lock\r\n\t\tomp_set_lock(&(current->lock));\r\n\r\n\t\tif (current->val == val) {\r\n\t\t\tprevious->next = current->next;\r\n\t\t\tcurrent->to_remove = 1; // Another system component will free this node later\r\n\t\t\t// job done ,release\r\n\t\t\tomp_unset_lock(&(previous->lock));\r\n\t\t\tomp_unset_lock(&(current->lock));\r\n\t\t\tomp_destroy_lock(&(current->lock));\r\n\t\t\treturn val;\r\n\t\t}\r\n\r\n\t\t// release the last one\r\n\t\tomp_unset_lock(&(previous->lock));\r\n\r\n\t\tprevious = current;\r\n\t\tcurrent  = current->next;\r\n\t}\r\n\r\n\t// release\r\n\tomp_unset_lock(&(previous->lock));\r\n\r\n\treturn -1;\r\n}\r\n\r\n\r\n/* This function searches for a specified element in a given linked list.\r\n * It returns zero if the element is found; otherwise it returns -1.\r\n */\r\nint search(node_t *head, int val) {\r\n\r\n\tnode_t *current = head->next;\r\n\tnode_t *previous;\r\n\r\n\twhile (current) {\r\n\t\t// need to lock the current because it needs to be up to date\r\n\t\tomp_set_lock(&(current->lock));\r\n\r\n\t\tif (current->val == val) {\r\n\t\t\tomp_unset_lock(&(current->lock));\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tprevious = current;\r\n\t\tcurrent  = current->next;\r\n\r\n\t\t// we can now remove the lock\r\n\t\tomp_unset_lock(&(previous->lock));\r\n\t}\r\n\r\n\treturn -1;\r\n}\r\n```\r\n\r\n```\r\n// Linked list struct\r\ntypedef struct node {\r\n\tint val;\r\n\tstruct node *next;\r\n\tint to_remove;\r\n\tomp_lock_t lock;\r\n} node_t;\r\n\r\n\r\n\r\nnode_t* create_head()\r\n{\r\n\tnode_t* node = malloc(sizeof(node_t));\r\n\tnode->next = NULL;\r\n\tnode->val = INT_MIN;\r\n\t// init the lock\r\n\tomp_init_lock(&(node->lock));\r\n\r\n\treturn node;\r\n}\r\n/* This function inserts a new given element at the right position of a given linked list.\r\n * It returns 0 on a successful insertion, and -1 if the list already has that value.\r\n */\r\nint insert(node_t *head, int val) {\r\n\r\n\tnode_t *previous, *current;\r\n\tcurrent = head;\r\n\tprevious = NULL;\r\n\r\n\r\n\twhile (current && current->val < val) {\r\n\t\tif(current->to_remove != 0) {\r\n\t\t\treturn insert(head, val);\r\n\t\t}\r\n\r\n\t\tprevious = current;\r\n\t\tcurrent  = current->next;\r\n\t}\r\n\r\n\tif (current && current->val == val) { // This value already exists!\r\n\t\treturn -1;\r\n\t}\r\n\r\n\tif (previous == NULL) {\r\n\t\t// Should not happen if head is correct\r\n\t\treturn -1;\r\n\t}\r\n\r\n\r\n\t// we need to lock the left side\r\n\t// we need left to add the new node to it\r\n\tomp_set_lock(&(previous->lock));\r\n\r\n\tif(current != NULL) {\r\n\t\t// We need to lock the right side to make sure it doesn't go to to_remove = 1\r\n\t\tomp_set_lock(&(current->lock));\r\n\t}\r\n\r\n\tif(previous->to_remove != 0 || (current != NULL && current->to_remove != 0)){\r\n\t\tomp_unset_lock(&(previous->lock));\r\n\t\tif(current != NULL) {\r\n\t\t\tomp_set_lock(&(current->lock));\r\n\t\t}\r\n\t\treturn insert(head, val);\r\n\t}\r\n\r\n\r\n\t// Here is the right position to insert the new node.\r\n\tnode_t *new_node;\r\n\tnew_node = malloc(sizeof(node_t));\r\n\tnew_node->val = val;\r\n\tnew_node->next = current;\r\n\tnew_node->to_remove = 0;\r\n\r\n\t// init the new node lock\r\n\tomp_init_lock(&(new_node->lock));\r\n\r\n\r\n\tprevious->next = new_node;\r\n\r\n\tomp_unset_lock(&(previous->lock));\r\n\tif(current != NULL) {\r\n\t\tomp_set_lock(&(current->lock));\r\n\t}\r\n\r\n\treturn 0;\r\n}\r\n\r\n/* This function removes the specified element of a given linked list.\r\n * The value of that element is returned if the element is found; otherwise it returns -1.\r\n */\r\nint delete(node_t *head, int val) {\r\n\r\n\tnode_t *previous, *current;\r\n\r\n\tif (head->next == NULL) { // The list is empty.\r\n\t\treturn -1;\r\n\t}\r\n\r\n\tprevious = head;\r\n\r\n\tcurrent = head->next;\r\n\r\n\twhile (current) {\r\n\t\tif(current->to_remove != 0)\r\n\t\t{\r\n\t\t\treturn delete(head, val);\r\n\t\t}\r\n\r\n\t\tif (current->val == val) {\r\n\t\t\t// need to modify previous\r\n\t\t\tomp_set_lock(&(previous->lock));\r\n\r\n\t\t\t// don't want a thread to work on the removed node\r\n\t\t\tomp_set_lock(&(current->lock));\r\n\r\n\t\t\t// We do not lock the current->next because it can't be deleted\r\n\t\t\t// (if an other thread want to delete it, he needs the lock on current !).\r\n\r\n\t\t\t// check if still present\r\n\t\t\tif(previous->to_remove != 0){\r\n\t\t\t\tomp_unset_lock(&(current->lock));\r\n\t\t\t\tomp_unset_lock(&(previous->lock));\r\n\t\t\t\t// need to start again...\r\n\t\t\t\treturn delete(head, val);\r\n\t\t\t}\r\n\r\n\t\t\tprevious->next = current->next;\r\n\t\t\tcurrent->to_remove = 1; // Another system component will free this node later\r\n\r\n\t\t\t// job done ,release\r\n\t\t\tomp_unset_lock(&(current->lock));\r\n\t\t\tomp_unset_lock(&(previous->lock));\r\n\t\t\tomp_destroy_lock(&(current->lock));\r\n\t\t\tfree(current);\r\n\t\t\treturn val;\r\n\t\t}\r\n\r\n\t\tprevious = current;\r\n\t\tcurrent  = current->next;\r\n\t}\r\n\r\n\treturn -1;\r\n}\r\n\r\n\r\n/* This function searches for a specified element in a given linked list.\r\n * It returns zero if the element is found; otherwise it returns -1.\r\n */\r\nint search(node_t *head, int val) {\r\n\r\n\tnode_t *current = head->next;\r\n\r\n\r\n\twhile (current) {\r\n\t\tif(current->to_remove != 0){\r\n\t\t\treturn search(head, val);\r\n\t\t}\r\n\t\tif (current->val == val) {\r\n\t\t\t// need to take the lock\r\n\t\t\tomp_set_lock(&(current->lock));\r\n\t\t\t// verify that data are still up to date and not modified by an other thread\r\n\t\t\tif(current->to_remove != 0 && current->val ==val){\r\n\t\t\t\tomp_unset_lock(&(current->lock));\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t\t// node is inconsistent...\r\n\t\t\tomp_unset_lock(&(current->lock));\r\n\t\t\treturn search(head, val);\r\n\t\t}\r\n\t\tcurrent  = current->next;\r\n\t}\r\n\treturn -1;\r\n}\r\n```\r\n\r\n#230  PR Details\r\n\r\n<!--- Provide a general summary of your changes in the Title above -->\r\n\r\n## Description\r\n\r\n<!--- Describe your changes in detail -->\r\n\r\n## Related Issue\r\n\r\n<!--- This project only accepts pull requests related to open issues -->\r\n<!--- If suggesting a new feature or change, please discuss it in an issue first -->\r\n<!--- If fixing a bug, there should be an issue describing it with steps to reproduce -->\r\n<!--- Please link to the issue here: -->\r\n\r\n## Motivation and Context\r\n\r\n<!--- Why is this change required? What problem does it solve? -->\r\n\r\n## How Has This Been Tested\r\n\r\n<!--- Please describe in detail how you tested your changes. -->\r\n<!--- Include details of your testing environment, and the tests you ran to -->\r\n<!--- see how your change affects other areas of the code, etc. -->\r\n\r\n## Types of changes\r\n\r\n<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->\r\n\r\n- [ ] Docs change / refactoring / dependency upgrade\r\n- [ ] Bug fix (non-breaking change which fixes an issue)\r\n- [ ] New feature (non-breaking change which adds functionality)\r\n- [ ] Breaking change (fix or feature that would cause existing functionality to change)\r\n\r\n## Checklist\r\n\r\n<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->\r\n<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->\r\n\r\n- [ ] My code follows the code style of this project.\r\n- [ ] My change requires a change to the documentation.\r\n- [ ] I have updated the documentation accordingly.\r\n- [ ] I have read the **CONTRIBUTING** document.\r\n- [ ] I have added tests to cover my changes.\r\n- [ ] All new and existing tests passed.\r\n","created_at":"2018-11-26T20:00:17Z","updated_at":"2018-11-26T20:00:17Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/njomeau/zuluzulu/pulls/234/commits","review_comments_url":"https://api.github.com/repos/njomeau/zuluzulu/pulls/234/comments","review_comment_url":"https://api.github.com/repos/njomeau/zuluzulu/pulls/comments{/number}","comments_url":"https://api.github.com/repos/njomeau/zuluzulu/issues/234/comments","statuses_url":"https://api.github.com/repos/njomeau/zuluzulu/statuses/4873d2c6f4a385799a8d2c30295db5d0e33e04ae","head":{"label":"njomeau:dahn_memento","ref":"dahn_memento","sha":"4873d2c6f4a385799a8d2c30295db5d0e33e04ae","user":{"login":"njomeau","id":36692525,"node_id":"MDQ6VXNlcjM2NjkyNTI1","avatar_url":"https://avatars2.githubusercontent.com/u/36692525?v=4","gravatar_id":"","url":"https://api.github.com/users/njomeau","html_url":"https://github.com/njomeau","followers_url":"https://api.github.com/users/njomeau/followers","following_url":"https://api.github.com/users/njomeau/following{/other_user}","gists_url":"https://api.github.com/users/njomeau/gists{/gist_id}","starred_url":"https://api.github.com/users/njomeau/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/njomeau/subscriptions","organizations_url":"https://api.github.com/users/njomeau/orgs","repos_url":"https://api.github.com/users/njomeau/repos","events_url":"https://api.github.com/users/njomeau/events{/privacy}","received_events_url":"https://api.github.com/users/njomeau/received_events","type":"User","site_admin":false},"repo":{"id":150392436,"node_id":"MDEwOlJlcG9zaXRvcnkxNTAzOTI0MzY=","name":"zuluzulu","full_name":"njomeau/zuluzulu","private":false,"owner":{"login":"njomeau","id":36692525,"node_id":"MDQ6VXNlcjM2NjkyNTI1","avatar_url":"https://avatars2.githubusercontent.com/u/36692525?v=4","gravatar_id":"","url":"https://api.github.com/users/njomeau","html_url":"https://github.com/njomeau","followers_url":"https://api.github.com/users/njomeau/followers","following_url":"https://api.github.com/users/njomeau/following{/other_user}","gists_url":"https://api.github.com/users/njomeau/gists{/gist_id}","starred_url":"https://api.github.com/users/njomeau/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/njomeau/subscriptions","organizations_url":"https://api.github.com/users/njomeau/orgs","repos_url":"https://api.github.com/users/njomeau/repos","events_url":"https://api.github.com/users/njomeau/events{/privacy}","received_events_url":"https://api.github.com/users/njomeau/received_events","type":"User","site_admin":false},"html_url":"https://github.com/njomeau/zuluzulu","description":"Base of the project","fork":false,"url":"https://api.github.com/repos/njomeau/zuluzulu","forks_url":"https://api.github.com/repos/njomeau/zuluzulu/forks","keys_url":"https://api.github.com/repos/njomeau/zuluzulu/keys{/key_id}","collaborators_url":"https://api.github.com/repos/njomeau/zuluzulu/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/njomeau/zuluzulu/teams","hooks_url":"https://api.github.com/repos/njomeau/zuluzulu/hooks","issue_events_url":"https://api.github.com/repos/njomeau/zuluzulu/issues/events{/number}","events_url":"https://api.github.com/repos/njomeau/zuluzulu/events","assignees_url":"https://api.github.com/repos/njomeau/zuluzulu/assignees{/user}","branches_url":"https://api.github.com/repos/njomeau/zuluzulu/branches{/branch}","tags_url":"https://api.github.com/repos/njomeau/zuluzulu/tags","blobs_url":"https://api.github.com/repos/njomeau/zuluzulu/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/njomeau/zuluzulu/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/njomeau/zuluzulu/git/refs{/sha}","trees_url":"https://api.github.com/repos/njomeau/zuluzulu/git/trees{/sha}","statuses_url":"https://api.github.com/repos/njomeau/zuluzulu/statuses/{sha}","languages_url":"https://api.github.com/repos/njomeau/zuluzulu/languages","stargazers_url":"https://api.github.com/repos/njomeau/zuluzulu/stargazers","contributors_url":"https://api.github.com/repos/njomeau/zuluzulu/contributors","subscribers_url":"https://api.github.com/repos/njomeau/zuluzulu/subscribers","subscription_url":"https://api.github.com/repos/njomeau/zuluzulu/subscription","commits_url":"https://api.github.com/repos/njomeau/zuluzulu/commits{/sha}","git_commits_url":"https://api.github.com/repos/njomeau/zuluzulu/git/commits{/sha}","comments_url":"https://api.github.com/repos/njomeau/zuluzulu/comments{/number}","issue_comment_url":"https://api.github.com/repos/njomeau/zuluzulu/issues/comments{/number}","contents_url":"https://api.github.com/repos/njomeau/zuluzulu/contents/{+path}","compare_url":"https://api.github.com/repos/njomeau/zuluzulu/compare/{base}...{head}","merges_url":"https://api.github.com/repos/njomeau/zuluzulu/merges","archive_url":"https://api.github.com/repos/njomeau/zuluzulu/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/njomeau/zuluzulu/downloads","issues_url":"https://api.github.com/repos/njomeau/zuluzulu/issues{/number}","pulls_url":"https://api.github.com/repos/njomeau/zuluzulu/pulls{/number}","milestones_url":"https://api.github.com/repos/njomeau/zuluzulu/milestones{/number}","notifications_url":"https://api.github.com/repos/njomeau/zuluzulu/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/njomeau/zuluzulu/labels{/name}","releases_url":"https://api.github.com/repos/njomeau/zuluzulu/releases{/id}","deployments_url":"https://api.github.com/repos/njomeau/zuluzulu/deployments","created_at":"2018-09-26T08:18:01Z","updated_at":"2018-11-25T22:01:16Z","pushed_at":"2018-11-26T19:54:39Z","git_url":"git://github.com/njomeau/zuluzulu.git","ssh_url":"git@github.com:njomeau/zuluzulu.git","clone_url":"https://github.com/njomeau/zuluzulu.git","svn_url":"https://github.com/njomeau/zuluzulu","homepage":null,"size":2607,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":47,"license":null,"forks":0,"open_issues":47,"watchers":0,"default_branch":"master"}},"base":{"label":"njomeau:master","ref":"master","sha":"df2f1a78ab6f775d57578cd5de458784882ebc94","user":{"login":"njomeau","id":36692525,"node_id":"MDQ6VXNlcjM2NjkyNTI1","avatar_url":"https://avatars2.githubusercontent.com/u/36692525?v=4","gravatar_id":"","url":"https://api.github.com/users/njomeau","html_url":"https://github.com/njomeau","followers_url":"https://api.github.com/users/njomeau/followers","following_url":"https://api.github.com/users/njomeau/following{/other_user}","gists_url":"https://api.github.com/users/njomeau/gists{/gist_id}","starred_url":"https://api.github.com/users/njomeau/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/njomeau/subscriptions","organizations_url":"https://api.github.com/users/njomeau/orgs","repos_url":"https://api.github.com/users/njomeau/repos","events_url":"https://api.github.com/users/njomeau/events{/privacy}","received_events_url":"https://api.github.com/users/njomeau/received_events","type":"User","site_admin":false},"repo":{"id":150392436,"node_id":"MDEwOlJlcG9zaXRvcnkxNTAzOTI0MzY=","name":"zuluzulu","full_name":"njomeau/zuluzulu","private":false,"owner":{"login":"njomeau","id":36692525,"node_id":"MDQ6VXNlcjM2NjkyNTI1","avatar_url":"https://avatars2.githubusercontent.com/u/36692525?v=4","gravatar_id":"","url":"https://api.github.com/users/njomeau","html_url":"https://github.com/njomeau","followers_url":"https://api.github.com/users/njomeau/followers","following_url":"https://api.github.com/users/njomeau/following{/other_user}","gists_url":"https://api.github.com/users/njomeau/gists{/gist_id}","starred_url":"https://api.github.com/users/njomeau/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/njomeau/subscriptions","organizations_url":"https://api.github.com/users/njomeau/orgs","repos_url":"https://api.github.com/users/njomeau/repos","events_url":"https://api.github.com/users/njomeau/events{/privacy}","received_events_url":"https://api.github.com/users/njomeau/received_events","type":"User","site_admin":false},"html_url":"https://github.com/njomeau/zuluzulu","description":"Base of the project","fork":false,"url":"https://api.github.com/repos/njomeau/zuluzulu","forks_url":"https://api.github.com/repos/njomeau/zuluzulu/forks","keys_url":"https://api.github.com/repos/njomeau/zuluzulu/keys{/key_id}","collaborators_url":"https://api.github.com/repos/njomeau/zuluzulu/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/njomeau/zuluzulu/teams","hooks_url":"https://api.github.com/repos/njomeau/zuluzulu/hooks","issue_events_url":"https://api.github.com/repos/njomeau/zuluzulu/issues/events{/number}","events_url":"https://api.github.com/repos/njomeau/zuluzulu/events","assignees_url":"https://api.github.com/repos/njomeau/zuluzulu/assignees{/user}","branches_url":"https://api.github.com/repos/njomeau/zuluzulu/branches{/branch}","tags_url":"https://api.github.com/repos/njomeau/zuluzulu/tags","blobs_url":"https://api.github.com/repos/njomeau/zuluzulu/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/njomeau/zuluzulu/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/njomeau/zuluzulu/git/refs{/sha}","trees_url":"https://api.github.com/repos/njomeau/zuluzulu/git/trees{/sha}","statuses_url":"https://api.github.com/repos/njomeau/zuluzulu/statuses/{sha}","languages_url":"https://api.github.com/repos/njomeau/zuluzulu/languages","stargazers_url":"https://api.github.com/repos/njomeau/zuluzulu/stargazers","contributors_url":"https://api.github.com/repos/njomeau/zuluzulu/contributors","subscribers_url":"https://api.github.com/repos/njomeau/zuluzulu/subscribers","subscription_url":"https://api.github.com/repos/njomeau/zuluzulu/subscription","commits_url":"https://api.github.com/repos/njomeau/zuluzulu/commits{/sha}","git_commits_url":"https://api.github.com/repos/njomeau/zuluzulu/git/commits{/sha}","comments_url":"https://api.github.com/repos/njomeau/zuluzulu/comments{/number}","issue_comment_url":"https://api.github.com/repos/njomeau/zuluzulu/issues/comments{/number}","contents_url":"https://api.github.com/repos/njomeau/zuluzulu/contents/{+path}","compare_url":"https://api.github.com/repos/njomeau/zuluzulu/compare/{base}...{head}","merges_url":"https://api.github.com/repos/njomeau/zuluzulu/merges","archive_url":"https://api.github.com/repos/njomeau/zuluzulu/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/njomeau/zuluzulu/downloads","issues_url":"https://api.github.com/repos/njomeau/zuluzulu/issues{/number}","pulls_url":"https://api.github.com/repos/njomeau/zuluzulu/pulls{/number}","milestones_url":"https://api.github.com/repos/njomeau/zuluzulu/milestones{/number}","notifications_url":"https://api.github.com/repos/njomeau/zuluzulu/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/njomeau/zuluzulu/labels{/name}","releases_url":"https://api.github.com/repos/njomeau/zuluzulu/releases{/id}","deployments_url":"https://api.github.com/repos/njomeau/zuluzulu/deployments","created_at":"2018-09-26T08:18:01Z","updated_at":"2018-11-25T22:01:16Z","pushed_at":"2018-11-26T19:54:39Z","git_url":"git://github.com/njomeau/zuluzulu.git","ssh_url":"git@github.com:njomeau/zuluzulu.git","clone_url":"https://github.com/njomeau/zuluzulu.git","svn_url":"https://github.com/njomeau/zuluzulu","homepage":null,"size":2607,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":47,"license":null,"forks":0,"open_issues":47,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/njomeau/zuluzulu/pulls/234"},"html":{"href":"https://github.com/njomeau/zuluzulu/pull/234"},"issue":{"href":"https://api.github.com/repos/njomeau/zuluzulu/issues/234"},"comments":{"href":"https://api.github.com/repos/njomeau/zuluzulu/issues/234/comments"},"review_comments":{"href":"https://api.github.com/repos/njomeau/zuluzulu/pulls/234/comments"},"review_comment":{"href":"https://api.github.com/repos/njomeau/zuluzulu/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/njomeau/zuluzulu/pulls/234/commits"},"statuses":{"href":"https://api.github.com/repos/njomeau/zuluzulu/statuses/4873d2c6f4a385799a8d2c30295db5d0e33e04ae"}},"author_association":"COLLABORATOR","merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":false,"commits":3,"additions":9,"deletions":15,"changed_files":2}}
{"actor":{"display_login":"Dahnepfl"}}