GitHub PullRequestEvent at 2014-05-17 19:58:17
Repository: fsnotify
Actor: nathany
Payload: {"action":"reopened","number":65,"pull_request":{"url":"https://api.github.com/repos/howeyc/fsnotify/pulls/65","id":8232625,"html_url":"https://github.com/howeyc/fsnotify/pull/65","diff_url":"https://github.com/howeyc/fsnotify/pull/65.diff","patch_url":"https://github.com/howeyc/fsnotify/pull/65.patch","issue_url":"https://api.github.com/repos/howeyc/fsnotify/issues/65","number":65,"state":"open","title":"Event Processing Pipeline (WIP)","user":{"login":"nathany","id":4566,"avatar_url":"https://avatars.githubusercontent.com/u/4566?","gravatar_id":"7d0978b275a362d11283396a929aee65","url":"https://api.github.com/users/nathany","html_url":"https://github.com/nathany","followers_url":"https://api.github.com/users/nathany/followers","following_url":"https://api.github.com/users/nathany/following{/other_user}","gists_url":"https://api.github.com/users/nathany/gists{/gist_id}","starred_url":"https://api.github.com/users/nathany/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nathany/subscriptions","organizations_url":"https://api.github.com/users/nathany/orgs","repos_url":"https://api.github.com/users/nathany/repos","events_url":"https://api.github.com/users/nathany/events{/privacy}","received_events_url":"https://api.github.com/users/nathany/received_events","type":"User","site_admin":false},"body":"This introduces a pipeline for processing events before forwarding them to the Event channel.\r\n\r\n* The trigger pipeline step is used to filter **create, modify, delete, rename** events. It's logic is an extraction of the code that was in `purgeEvents().`\r\n* The hidden pipeline step filters hidden files and directories\r\n* The pattern pipeline step filters based on shell file pattern, eg. \"*.go,*.c\"\r\n* The throttle pipeline step filters trailing events on the same file\r\n* The logging step logs all new events (and the verbose flag is used elsewhere)\r\n\r\nInitially I avoided changing the exported API, but since I began adding additional pipeline steps, I've started to implement changes as originally proposed in #64. \r\n\r\nThe tests pass on OS X, Linux, BSD and Windows and I have been testing it from Looper as well. I have seen some intermittent failures in `TestFsnotifySubDir` on OS X (#67).\r\n\r\n* [ ] Update usage information in README and example_test (GoDoc). \r\n* [ ] how to handle fallbacks when pipeline (was fsnFlags) was not found in the Watcher structure on Linux/BSD\r\n\r\n### Event\r\n\r\n* [ ] add IsDir() to Event interface/FileEvent implementation (do a separate PR) **NEXT**\r\n\r\n### Recursive\r\n\r\n* [x] The auto watch pipeline step needs to watch a folder with the same pipeline/options\r\n* [ ] Need to handle errors from the auto watch (put on the Error channel?)\r\n* [ ] Remove watch recursively (the externalWatches addition to kqueue may help here?)\r\n* [x] Tests\r\n\r\n### Hidden\r\n\r\n* [x] does Windows need special handling for filtering hidden files/folders\r\n* [ ] handle hidden edge case, request a watch on a hidden folder with Hidden:false\r\n* [ ] make hidden option more clear (Keep/IgnoreHidden?)\r\n\r\n### Throttle\r\n\r\n* note behaviour and configuration may change to match FSEvents adapter in the future #54\r\n\r\n### Verbose\r\n\r\n* [ ] determine more specifically what it should/shouldn't log\r\n* [ ] should it work with other logging packages? can we add that later easily enough? (just more Options)\r\n\r\n### API\r\n\r\n* [x] should the notifier interface be public and what should it be called? Either way the Event channel must remain a type of FileEvent to avoid breaking changes.\r\n* continue discussion of public API #64 before merging to master? come back to channels vs. iterators and other API changes as part of the move to os/fsnotify.\r\n\r\n### Tests\r\n\r\n* [ ] Keep current integration tests for previous API and write up new ones to test against new APIs.\r\n\r\n","created_at":"2013-09-11T03:57:53Z","updated_at":"2014-05-17T19:58:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a2c9025f4565e4b5b55e7de26760ae5edae95344","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/howeyc/fsnotify/pulls/65/commits","review_comments_url":"https://api.github.com/repos/howeyc/fsnotify/pulls/65/comments","review_comment_url":"https://api.github.com/repos/howeyc/fsnotify/pulls/comments/{number}","comments_url":"https://api.github.com/repos/howeyc/fsnotify/issues/65/comments","statuses_url":"https://api.github.com/repos/howeyc/fsnotify/statuses/f2614ea889360a0c7b5a5b61659e386cfd195530","head":{"label":"gophertown:pipeline","ref":"pipeline","sha":"f2614ea889360a0c7b5a5b61659e386cfd195530","user":{"login":"gophertown","id":3676253,"avatar_url":"https://avatars.githubusercontent.com/u/3676253?","gravatar_id":"a8047298c8428798ad7fce0d8d4446d5","url":"https://api.github.com/users/gophertown","html_url":"https://github.com/gophertown","followers_url":"https://api.github.com/users/gophertown/followers","following_url":"https://api.github.com/users/gophertown/following{/other_user}","gists_url":"https://api.github.com/users/gophertown/gists{/gist_id}","starred_url":"https://api.github.com/users/gophertown/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gophertown/subscriptions","organizations_url":"https://api.github.com/users/gophertown/orgs","repos_url":"https://api.github.com/users/gophertown/repos","events_url":"https://api.github.com/users/gophertown/events{/privacy}","received_events_url":"https://api.github.com/users/gophertown/received_events","type":"Organization","site_admin":false},"repo":{"id":12658446,"name":"fsnotify","full_name":"gophertown/fsnotify","owner":{"login":"gophertown","id":3676253,"avatar_url":"https://avatars.githubusercontent.com/u/3676253?","gravatar_id":"a8047298c8428798ad7fce0d8d4446d5","url":"https://api.github.com/users/gophertown","html_url":"https://github.com/gophertown","followers_url":"https://api.github.com/users/gophertown/followers","following_url":"https://api.github.com/users/gophertown/following{/other_user}","gists_url":"https://api.github.com/users/gophertown/gists{/gist_id}","starred_url":"https://api.github.com/users/gophertown/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gophertown/subscriptions","organizations_url":"https://api.github.com/users/gophertown/orgs","repos_url":"https://api.github.com/users/gophertown/repos","events_url":"https://api.github.com/users/gophertown/events{/privacy}","received_events_url":"https://api.github.com/users/gophertown/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/gophertown/fsnotify","description":"File system notification for Go","fork":true,"url":"https://api.github.com/repos/gophertown/fsnotify","forks_url":"https://api.github.com/repos/gophertown/fsnotify/forks","keys_url":"https://api.github.com/repos/gophertown/fsnotify/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gophertown/fsnotify/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gophertown/fsnotify/teams","hooks_url":"https://api.github.com/repos/gophertown/fsnotify/hooks","issue_events_url":"https://api.github.com/repos/gophertown/fsnotify/issues/events{/number}","events_url":"https://api.github.com/repos/gophertown/fsnotify/events","assignees_url":"https://api.github.com/repos/gophertown/fsnotify/assignees{/user}","branches_url":"https://api.github.com/repos/gophertown/fsnotify/branches{/branch}","tags_url":"https://api.github.com/repos/gophertown/fsnotify/tags","blobs_url":"https://api.github.com/repos/gophertown/fsnotify/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gophertown/fsnotify/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gophertown/fsnotify/git/refs{/sha}","trees_url":"https://api.github.com/repos/gophertown/fsnotify/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gophertown/fsnotify/statuses/{sha}","languages_url":"https://api.github.com/repos/gophertown/fsnotify/languages","stargazers_url":"https://api.github.com/repos/gophertown/fsnotify/stargazers","contributors_url":"https://api.github.com/repos/gophertown/fsnotify/contributors","subscribers_url":"https://api.github.com/repos/gophertown/fsnotify/subscribers","subscription_url":"https://api.github.com/repos/gophertown/fsnotify/subscription","commits_url":"https://api.github.com/repos/gophertown/fsnotify/commits{/sha}","git_commits_url":"https://api.github.com/repos/gophertown/fsnotify/git/commits{/sha}","comments_url":"https://api.github.com/repos/gophertown/fsnotify/comments{/number}","issue_comment_url":"https://api.github.com/repos/gophertown/fsnotify/issues/comments/{number}","contents_url":"https://api.github.com/repos/gophertown/fsnotify/contents/{+path}","compare_url":"https://api.github.com/repos/gophertown/fsnotify/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gophertown/fsnotify/merges","archive_url":"https://api.github.com/repos/gophertown/fsnotify/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gophertown/fsnotify/downloads","issues_url":"https://api.github.com/repos/gophertown/fsnotify/issues{/number}","pulls_url":"https://api.github.com/repos/gophertown/fsnotify/pulls{/number}","milestones_url":"https://api.github.com/repos/gophertown/fsnotify/milestones{/number}","notifications_url":"https://api.github.com/repos/gophertown/fsnotify/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gophertown/fsnotify/labels{/name}","releases_url":"https://api.github.com/repos/gophertown/fsnotify/releases{/id}","created_at":"2013-09-07T02:10:23Z","updated_at":"2014-02-27T14:46:22Z","pushed_at":"2014-02-27T03:44:56Z","git_url":"git://github.com/gophertown/fsnotify.git","ssh_url":"git@github.com:gophertown/fsnotify.git","clone_url":"https://github.com/gophertown/fsnotify.git","svn_url":"https://github.com/gophertown/fsnotify","homepage":"","size":546,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"howeyc:master","ref":"master","sha":"5102fde921d31f59c6e45d835aa01f0213aade0f","user":{"login":"howeyc","id":1114329,"avatar_url":"https://avatars.githubusercontent.com/u/1114329?","gravatar_id":"84f07b128e3595ca4fa12d2b335de9fe","url":"https://api.github.com/users/howeyc","html_url":"https://github.com/howeyc","followers_url":"https://api.github.com/users/howeyc/followers","following_url":"https://api.github.com/users/howeyc/following{/other_user}","gists_url":"https://api.github.com/users/howeyc/gists{/gist_id}","starred_url":"https://api.github.com/users/howeyc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/howeyc/subscriptions","organizations_url":"https://api.github.com/users/howeyc/orgs","repos_url":"https://api.github.com/users/howeyc/repos","events_url":"https://api.github.com/users/howeyc/events{/privacy}","received_events_url":"https://api.github.com/users/howeyc/received_events","type":"User","site_admin":false},"repo":{"id":3861102,"name":"fsnotify","full_name":"howeyc/fsnotify","owner":{"login":"howeyc","id":1114329,"avatar_url":"https://avatars.githubusercontent.com/u/1114329?","gravatar_id":"84f07b128e3595ca4fa12d2b335de9fe","url":"https://api.github.com/users/howeyc","html_url":"https://github.com/howeyc","followers_url":"https://api.github.com/users/howeyc/followers","following_url":"https://api.github.com/users/howeyc/following{/other_user}","gists_url":"https://api.github.com/users/howeyc/gists{/gist_id}","starred_url":"https://api.github.com/users/howeyc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/howeyc/subscriptions","organizations_url":"https://api.github.com/users/howeyc/orgs","repos_url":"https://api.github.com/users/howeyc/repos","events_url":"https://api.github.com/users/howeyc/events{/privacy}","received_events_url":"https://api.github.com/users/howeyc/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/howeyc/fsnotify","description":"File system notification for Go","fork":false,"url":"https://api.github.com/repos/howeyc/fsnotify","forks_url":"https://api.github.com/repos/howeyc/fsnotify/forks","keys_url":"https://api.github.com/repos/howeyc/fsnotify/keys{/key_id}","collaborators_url":"https://api.github.com/repos/howeyc/fsnotify/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/howeyc/fsnotify/teams","hooks_url":"https://api.github.com/repos/howeyc/fsnotify/hooks","issue_events_url":"https://api.github.com/repos/howeyc/fsnotify/issues/events{/number}","events_url":"https://api.github.com/repos/howeyc/fsnotify/events","assignees_url":"https://api.github.com/repos/howeyc/fsnotify/assignees{/user}","branches_url":"https://api.github.com/repos/howeyc/fsnotify/branches{/branch}","tags_url":"https://api.github.com/repos/howeyc/fsnotify/tags","blobs_url":"https://api.github.com/repos/howeyc/fsnotify/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/howeyc/fsnotify/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/howeyc/fsnotify/git/refs{/sha}","trees_url":"https://api.github.com/repos/howeyc/fsnotify/git/trees{/sha}","statuses_url":"https://api.github.com/repos/howeyc/fsnotify/statuses/{sha}","languages_url":"https://api.github.com/repos/howeyc/fsnotify/languages","stargazers_url":"https://api.github.com/repos/howeyc/fsnotify/stargazers","contributors_url":"https://api.github.com/repos/howeyc/fsnotify/contributors","subscribers_url":"https://api.github.com/repos/howeyc/fsnotify/subscribers","subscription_url":"https://api.github.com/repos/howeyc/fsnotify/subscription","commits_url":"https://api.github.com/repos/howeyc/fsnotify/commits{/sha}","git_commits_url":"https://api.github.com/repos/howeyc/fsnotify/git/commits{/sha}","comments_url":"https://api.github.com/repos/howeyc/fsnotify/comments{/number}","issue_comment_url":"https://api.github.com/repos/howeyc/fsnotify/issues/comments/{number}","contents_url":"https://api.github.com/repos/howeyc/fsnotify/contents/{+path}","compare_url":"https://api.github.com/repos/howeyc/fsnotify/compare/{base}...{head}","merges_url":"https://api.github.com/repos/howeyc/fsnotify/merges","archive_url":"https://api.github.com/repos/howeyc/fsnotify/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/howeyc/fsnotify/downloads","issues_url":"https://api.github.com/repos/howeyc/fsnotify/issues{/number}","pulls_url":"https://api.github.com/repos/howeyc/fsnotify/pulls{/number}","milestones_url":"https://api.github.com/repos/howeyc/fsnotify/milestones{/number}","notifications_url":"https://api.github.com/repos/howeyc/fsnotify/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/howeyc/fsnotify/labels{/name}","releases_url":"https://api.github.com/repos/howeyc/fsnotify/releases{/id}","created_at":"2012-03-29T00:31:58Z","updated_at":"2014-05-17T03:21:25Z","pushed_at":"2014-04-02T03:03:18Z","git_url":"git://github.com/howeyc/fsnotify.git","ssh_url":"git@github.com:howeyc/fsnotify.git","clone_url":"https://github.com/howeyc/fsnotify.git","svn_url":"https://github.com/howeyc/fsnotify","homepage":"","size":884,"stargazers_count":723,"watchers_count":723,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":100,"mirror_url":null,"open_issues_count":15,"forks":100,"open_issues":15,"watchers":723,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/howeyc/fsnotify/pulls/65"},"html":{"href":"https://github.com/howeyc/fsnotify/pull/65"},"issue":{"href":"https://api.github.com/repos/howeyc/fsnotify/issues/65"},"comments":{"href":"https://api.github.com/repos/howeyc/fsnotify/issues/65/comments"},"review_comments":{"href":"https://api.github.com/repos/howeyc/fsnotify/pulls/65/comments"},"review_comment":{"href":"https://api.github.com/repos/howeyc/fsnotify/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/howeyc/fsnotify/pulls/65/commits"},"statuses":{"href":"https://api.github.com/repos/howeyc/fsnotify/statuses/f2614ea889360a0c7b5a5b61659e386cfd195530"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":7,"review_comments":6,"commits":30,"additions":847,"deletions":113,"changed_files":15}}