[improvement] Moved estimating effort to the Show Ticket modal (2.5h)
[refactor] Organized tests into subfolders of test/unit (5m)
[refactor] Extracted the call to `repo.refresh` into `CommitSynchronizer` (4m)
[refactor] Touched up conventions in ProjectTest (1m)
[fix] Synchronized commit models on post-receive (20m)
[skip] Ensured that we get a unique list of SHAs from all_commits (1m)
[fix] Stopped syncing commits for retired projects (1m)
[fix] Ensured that `Project#find_commit_by_sha` discovers commits using short shas (10m)
[refactor] Refactored Commit's class methods to the `class << self` style (1m)
[refactor] Extracted CommitSynchronizer#find_or_create_by_sha from Project#find_commit_by_sha (3m)
[refactor] Associated Deploys with Commits directly (25m)
[refactor] Refactored class methods on Release to `class << self` style (1m)
[skip] Replaced single-quotes with double-quotes (1m)
[fix] Showed the "no commits" message when attempting to create a release with an invalid commit range (4m)
[fix] Required commits' shas to be unique for a project (not globally) (2m)
[fix] Raised CommitNotFound instead of returning nil when requesting a native commit from NullRepo (1m)
[refactor] Associated Releases with Commits directly (45m)
[refactor] Extracted `native_commits` from Release to CommitSynchronizer (5m)