{"push_id":1111487747,"size":24,"distinct_size":1,"ref":"refs/heads/gl-check-for-line-presence","head":"4b661640a44e3ce80cbd6472331bcb4ac5522a39","before":"3405b09c88635fef55bbd94665ed0643fe47d137","commits":[{"sha":"6487e4326f0285d5801ac020b4e2267bbde31daf","author":{"email":"87edabdcd5eb95ecbb229781be7a3c27f5da3ebb@gmail.com","name":"Aidan Feldman"},"message":"Ignore NPM packages from JSHint linting\n\n`node_modules/` is equivalent to a `vendor/` folder, so it should be ignored by default when running JSHint.","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/6487e4326f0285d5801ac020b4e2267bbde31daf"},{"sha":"ad8c58c264cb62dd9a07fa0c852b88c2d439510b","author":{"email":"206c0d999cc41f1a0caa2c1c4240a65bc9f0616a@users.noreply.github.com","name":"Macklin Underdown"},"message":"Fix home page grammatical issue (#1113)\n\ns/needs/need","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/ad8c58c264cb62dd9a07fa0c852b88c2d439510b"},{"sha":"dfe01e66673374c44ca5b389cff7c0f605a22488","author":{"email":"ca48964b9c2e460b5342cb0171beebbf3d9376d9@gmail.com","name":"Steven Harley"},"message":"Add Swift language icon to homepage (#1062)\n\n- Add Python icon for future use on homepage, but don't reference it","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/dfe01e66673374c44ca5b389cff7c0f605a22488"},{"sha":"886d50c282e0f7c9e0bb864b51a73c0a21aa1326","author":{"email":"711c73f64afdce07b7e38039a96d2224209e9a6c@thorn.co","name":"Chris Thorn"},"message":"Use info log level in production\n\nAt some point, Rails changed the default log level when generating a new\napp to `debug`. When we upgraded to that version, we started [seeing\nwarnings][1] about the missing config value, so we went with `debug` to\nmatch the default.\n\nThis has resulted in our production logs being filled with SQL queries\nthat are not useful to us there, making it difficult to find other\ninformation and exhausting our Papertrail quota.\n\nThis changes the production log level to `info`, to cut down on our log\nsize.\n\n[1]: https://github.com/houndci/hound/commit/5e0aedf4feb28daafdb272178861a259b642d301","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/886d50c282e0f7c9e0bb864b51a73c0a21aa1326"},{"sha":"f13edd6a2f33e9c9f135db04667d61a4ce4073fb","author":{"email":"79e2475f81a6317276bf7cbb3958b20d289b78df@thoughtbot.com","name":"Greg Lazarev"},"message":"Upgrade RuboCop to 0.39 (#1116)\n\nMostly bug fixes in this one:\r\n\r\nhttps://github.com/bbatsov/rubocop/releases/tag/v0.39.0","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/f13edd6a2f33e9c9f135db04667d61a4ce4073fb"},{"sha":"fa8c286d8009f26eecc36359176f1a26c4d5a9dd","author":{"email":"79e2475f81a6317276bf7cbb3958b20d289b78df@thoughtbot.com","name":"Greg Lazarev"},"message":"Lookup ignore files using the linter's name (#1118)\n\n* Lookup ignore files using the linter's name\r\n\r\nThere was a bug where `JsIgnore` looked up the ignore file only for the\r\n`javascript` linter. It now takes in a linter name and uses that as the\r\nkey to look up in `.hound.yml`.\r\n\r\n* Set MultilineMethodCallIndentation Ruby rule to be indented","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/fa8c286d8009f26eecc36359176f1a26c4d5a9dd"},{"sha":"761488506608945a345bf4af338a9e24e5d74318","author":{"email":"79e2475f81a6317276bf7cbb3958b20d289b78df@thoughtbot.com","name":"Greg Lazarev"},"message":"Use Ruby 2.3.1 (#1117)","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/761488506608945a345bf4af338a9e24e5d74318"},{"sha":"1166341c246ea4fcb53122df67fb91a2d74d986a","author":{"email":"79e2475f81a6317276bf7cbb3958b20d289b78df@thoughtbot.com","name":"Greg Lazarev"},"message":"Upgrade HamlLint to 0.17.1 (#1120)","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/1166341c246ea4fcb53122df67fb91a2d74d986a"},{"sha":"ba262c77ec0a5836d339e29503518d0908eb9305","author":{"email":"2a557d5c40d9b6365f8be8cb17063003a05ca776@gmail.com","name":"brgaulin"},"message":"Updating Rubocop Rule Names (#1108)\n\nLooks like the names of the rubocops have changed when hound recently updated, this caused failing PRs.","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/ba262c77ec0a5836d339e29503518d0908eb9305"},{"sha":"734a1c6a849396996212ff77e0dad624c7744f4d","author":{"email":"75926e095b28dd773adde5bade93e4836b1d92fc@thinkcerca.com","name":"Jerry Busser"},"message":"Set JSCS default config as string, not hash (#1103)\n\nGiven a basic JSCS configuration of\r\n\r\n```\r\njscs:\r\n  enabled: true\r\n```\r\n\r\nInstances of `SmallBuildJob` will log an exception to Resque's `failed` queue.\r\nThe exception reads \"no implicit conversion of Hash into String.\"\r\n\r\nThe root cause turned out to be `Config::Jscs#default_content`. Instead of being\r\na string, it was a Ruby hash, and when a user provided no configuration file in\r\nhis `.hound.yml`, `Config::Jscs` attempted to parse that hash via `YAML.parse`,\r\nresulting in the exception.\r\n\r\nThis change removes `Config::Jscs#default_content`, instead delegating to\r\n`Config::Base#default_content`, which is already a String.","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/734a1c6a849396996212ff77e0dad624c7744f4d"},{"sha":"0c6a356aaa91b00226b3e944b439201142b20e9c","author":{"email":"711c73f64afdce07b7e38039a96d2224209e9a6c@thorn.co","name":"Chris Thorn"},"message":"Remove Code Climate badge\n\nThe badge has said 4.0 for many months (year?) and the Hound team does\nnot seem to be getting any value from Code Climate's analysis.","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/0c6a356aaa91b00226b3e944b439201142b20e9c"},{"sha":"bf5da79d72e7974ea58cb5dad3374717ba70bede","author":{"email":"711c73f64afdce07b7e38039a96d2224209e9a6c@thorn.co","name":"Chris Thorn"},"message":"Update rspec-rails to 3.4.2\n\nThis fixes the deprecation warning:\n\n    [DEPRECATION] `last_comment` is deprecated.  Please use `last_description` instead.","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/bf5da79d72e7974ea58cb5dad3374717ba70bede"},{"sha":"c0f22057720a63e9325ac268c6c1d4e8ffd48a94","author":{"email":"79e2475f81a6317276bf7cbb3958b20d289b78df@thoughtbot.com","name":"Greg Lazarev"},"message":"Ensure uniqueness of repos by github_id\n\nPreviously, we were ensuring repo uniqueness by name, but since we are\ntightly coupled to GitHub, we should be using their ids.\n\nThere was a recent bug that led to this:\n\n* On GitHub, `thoughtbot/constable-api` repo was renamed to `thoughtbot/constable`\n* On GitHub, `thoughtbot/constable` repo was renamed to `thoughtbot/constable-react`\n* When we were syncing repos, we would find the `thoughtbot/constable`\n  and create a membership for it\n* Then we would see the `thoughtbot/constable-react`. Nnot find it\n  by name, then look it up by `github_id` and pull up the same\n  `thoughtbot/constable` record and try to create a membership,\n  which would fail.\n\nIf we relied on `github_id` for uniqueness, we would eventually update\nthe names to match what GitHub has.","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/c0f22057720a63e9325ac268c6c1d4e8ffd48a94"},{"sha":"b4d461b1017d017619343a0d611d661c2ff2614c","author":{"email":"79e2475f81a6317276bf7cbb3958b20d289b78df@thoughtbot.com","name":"Greg Lazarev"},"message":"Refactor RepoSynchronization tests to simplify","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/b4d461b1017d017619343a0d611d661c2ff2614c"},{"sha":"03a5975d73f85d930d42dbfb23a56f2c71d7681a","author":{"email":"79e2475f81a6317276bf7cbb3958b20d289b78df@thoughtbot.com","name":"Greg Lazarev"},"message":"Remove task that deleted github_id repo duplicates\n\nSince `github_id` on `repos` is now enforced as a DB-level constraint,\nwe no longer can have duplicates.","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/03a5975d73f85d930d42dbfb23a56f2c71d7681a"},{"sha":"59aaf8233c3394bdbfd59050f89c09d640dc0c63","author":{"email":"79e2475f81a6317276bf7cbb3958b20d289b78df@thoughtbot.com","name":"Greg Lazarev"},"message":"Remove JSCS documenation\n\nIn preparation for dropping support of JSCS,\nwe're removing the documenation so users don't discover it.","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/59aaf8233c3394bdbfd59050f89c09d640dc0c63"},{"sha":"2f3a405ef000f65d2653b3c1f1f8e133f017ac07","author":{"email":"75926e095b28dd773adde5bade93e4836b1d92fc@thinkcerca.com","name":"Jerry Busser"},"message":"Add file_reviews.linter_name (#1102)\n\n[Related Github issue](https://github.com/houndci/hound/issues/1101)\r\n\r\nGenerally speaking, for any given language, Hound supports only one linter. For\r\nexample, Rubocop will handle all `.rb` files; SCSS-lint will lint `.scss` files\r\nand so on.\r\n\r\nAnd then there's JavaScript.\r\n\r\nFor JavaScript, Hound supports three linters: JShint, JSCS, and ESlint,\r\neach of which can be individually enabled or disabled. If both JShint and\r\nJSCS are enabled, however, Hound code reviews will never complete for a given\r\nbuild, and this is because `CompleteFileReivew#file_review` will only look up\r\na `FileReview` by its `filename` attribute, and when multiple linters are\r\nworking on a single file, that is not enough information. The second through nth\r\n`FileReivew` for that file never gets found, and its `completed_at` never gets\r\nupdated. When that happens, `Build#complete?` always returns false.\r\n\r\nThis change creates a migration that adds a new column to the `file_reviews`\r\ntable, which will store the name of the linter assigned to a given file review.\r\nThe corresponding `FileReview` model will acquire a model-level validation to\r\nensure the presence of this new linter-name attribute.\r\n\r\nIt then updates `Linter::Base#enqueue_job` to add the linter_name attribute to\r\nthe hash of review-job attributes so that linters can pick up this new\r\nattribute. When their reviews are complete, the linters can be configured to\r\npass the linter name back to Hound, along with any errors and the filename, just\r\nas before.\r\n\r\nThe last part of this solution involves updating\r\n`CompleteFileReview#file_review` to anticipate an optional `linter_name`\r\nattribute in its dequeued job attributes, which it will use to perform a more\r\nprecise search of `FileReview` objects in the relevant build. In order to avoid\r\na large coordinated upgrade effort, this method will fall back to the previous\r\nlocator logic, which only operates on the job's `filename` attribute.","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/2f3a405ef000f65d2653b3c1f1f8e133f017ac07"},{"sha":"a46b641696d8861663cf7381f06ca7a9d8d4e9db","author":{"email":"ea73344294b1c6e2cb529d7fc98a4971de7607ac@codequest.eu","name":"Tomasz Korzeniowski"},"message":"codebeat badge\n\nIs it fine to add codebeat badge to README? \r\n\r\ncodebeat is automated code review tool for Swift, Ruby & Go that helps get instant feedback on code quality. \r\n\r\n\"Quick wins\" suggested by codebeat could be a nice candidate for a pull request and help other developers become contributors.\r\n\r\nFYI. To be fully open and honest. I'm co-founder of codebeat.","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/a46b641696d8861663cf7381f06ca7a9d8d4e9db"},{"sha":"2da8d49392481956deb0afa332c97134e18d04a0","author":{"email":"79e2475f81a6317276bf7cbb3958b20d289b78df@thoughtbot.com","name":"Greg Lazarev"},"message":"Display failed Resque jobs in the admin section\n\nThere is a need to view similar Resque failures,\nand the Resque backend UI isn't ideal for this.\n\nGroup similar errors by error message and show their ids for ease\nof resolving them.\n\n* Integrate with Administrate for admin-only acess.\n* Add `JobFailure` to wrap around Resque specific API.\n* Point Redis to a non-default database in test environment,\n  so it doesn't interfere with development data.\n* Wrap test runs that touch Redis into a block that cleans up after\nitself to avoid leaving around data from previous tests.\n\nhttps://trello.com/c/SUydnPxN","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/2da8d49392481956deb0afa332c97134e18d04a0"},{"sha":"cc4e0920f2b2dd7d6f38f2b777f5ddd08737fcb0","author":{"email":"79e2475f81a6317276bf7cbb3958b20d289b78df@thoughtbot.com","name":"Greg Lazarev"},"message":"Implement ability to remove failed jobs\n\nWhen removing the failures, we need to reverse the indexes because when\nwe remove a failure indexes shift. So, if we remove starting from the\ntail, then shifting is irrelevant to our removal procedure.","distinct":false,"url":"https://api.github.com/repos/houndci/hound/commits/cc4e0920f2b2dd7d6f38f2b777f5ddd08737fcb0"}]}