{"action":"closed","number":30,"pull_request":{"url":"https://api.github.com/repos/elasticdog/transcrypt/pulls/30","id":83339046,"html_url":"https://github.com/elasticdog/transcrypt/pull/30","diff_url":"https://github.com/elasticdog/transcrypt/pull/30.diff","patch_url":"https://github.com/elasticdog/transcrypt/pull/30.patch","issue_url":"https://api.github.com/repos/elasticdog/transcrypt/issues/30","number":30,"state":"closed","locked":false,"title":"Generalize handling of repository path references","user":{"login":"elasticdog","id":4742,"avatar_url":"https://avatars.githubusercontent.com/u/4742?v=3","gravatar_id":"","url":"https://api.github.com/users/elasticdog","html_url":"https://github.com/elasticdog","followers_url":"https://api.github.com/users/elasticdog/followers","following_url":"https://api.github.com/users/elasticdog/following{/other_user}","gists_url":"https://api.github.com/users/elasticdog/gists{/gist_id}","starred_url":"https://api.github.com/users/elasticdog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elasticdog/subscriptions","organizations_url":"https://api.github.com/users/elasticdog/orgs","repos_url":"https://api.github.com/users/elasticdog/repos","events_url":"https://api.github.com/users/elasticdog/events{/privacy}","received_events_url":"https://api.github.com/users/elasticdog/received_events","type":"User","site_admin":false},"body":"Cleaning up the hard-coded references to certain repository paths not only reduces duplication, but allows us to support fancier workflows. By generalizing the `$GIT_DIR` and `$GIT_ATTRIBUTES` paths, we can now:\r\n\r\n* configure bare repositories\r\n* configure \"fake bare\" repositories for use through [vcsh](https://github.com/RichiH/vcsh)\r\n* configure multiple worktrees via [git-workflow](https://github.com/blog/2042-git-2-5-including-multiple-worktrees-and-triangular-workflows)\r\n* support unencrypted archive exporting via [git-archive](https://git-scm.com/docs/git-archive)\r\n\r\nThe trickiest part of all this was the need for converting relative paths into absolute paths in a reliable manner. External programs exist to do this, but they're not commonly part of the base OS installs for all the platforms I'd like to support. I needed a Bash-only solution...\r\n\r\nI ended up writing a `realpath()` function, and it has proven robust in my testing across various workflows thus far, but I suspect that it's the weak link in these changes. To help understand what's going on, transcrypt now displays some key repository metadata as part of the `--display` command.\r\n\r\nping @tvaughan @ariver @KenRud any chance you fellas could test this branch with your desired workflow to see if things work as expected outside of my limited testing environments?","created_at":"2016-08-30T20:14:30Z","updated_at":"2016-09-04T17:51:25Z","closed_at":"2016-09-04T17:51:25Z","merged_at":"2016-09-04T17:51:25Z","merge_commit_sha":"551876d6008f17a821d12edf7e59cc12e1df3d90","assignee":{"login":"elasticdog","id":4742,"avatar_url":"https://avatars.githubusercontent.com/u/4742?v=3","gravatar_id":"","url":"https://api.github.com/users/elasticdog","html_url":"https://github.com/elasticdog","followers_url":"https://api.github.com/users/elasticdog/followers","following_url":"https://api.github.com/users/elasticdog/following{/other_user}","gists_url":"https://api.github.com/users/elasticdog/gists{/gist_id}","starred_url":"https://api.github.com/users/elasticdog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elasticdog/subscriptions","organizations_url":"https://api.github.com/users/elasticdog/orgs","repos_url":"https://api.github.com/users/elasticdog/repos","events_url":"https://api.github.com/users/elasticdog/events{/privacy}","received_events_url":"https://api.github.com/users/elasticdog/received_events","type":"User","site_admin":false},"assignees":[{"login":"elasticdog","id":4742,"avatar_url":"https://avatars.githubusercontent.com/u/4742?v=3","gravatar_id":"","url":"https://api.github.com/users/elasticdog","html_url":"https://github.com/elasticdog","followers_url":"https://api.github.com/users/elasticdog/followers","following_url":"https://api.github.com/users/elasticdog/following{/other_user}","gists_url":"https://api.github.com/users/elasticdog/gists{/gist_id}","starred_url":"https://api.github.com/users/elasticdog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elasticdog/subscriptions","organizations_url":"https://api.github.com/users/elasticdog/orgs","repos_url":"https://api.github.com/users/elasticdog/repos","events_url":"https://api.github.com/users/elasticdog/events{/privacy}","received_events_url":"https://api.github.com/users/elasticdog/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/elasticdog/transcrypt/pulls/30/commits","review_comments_url":"https://api.github.com/repos/elasticdog/transcrypt/pulls/30/comments","review_comment_url":"https://api.github.com/repos/elasticdog/transcrypt/pulls/comments{/number}","comments_url":"https://api.github.com/repos/elasticdog/transcrypt/issues/30/comments","statuses_url":"https://api.github.com/repos/elasticdog/transcrypt/statuses/fbc611d7dfdf973023d72796564ca2e2141e1155","head":{"label":"elasticdog:git-dir","ref":"git-dir","sha":"fbc611d7dfdf973023d72796564ca2e2141e1155","user":{"login":"elasticdog","id":4742,"avatar_url":"https://avatars.githubusercontent.com/u/4742?v=3","gravatar_id":"","url":"https://api.github.com/users/elasticdog","html_url":"https://github.com/elasticdog","followers_url":"https://api.github.com/users/elasticdog/followers","following_url":"https://api.github.com/users/elasticdog/following{/other_user}","gists_url":"https://api.github.com/users/elasticdog/gists{/gist_id}","starred_url":"https://api.github.com/users/elasticdog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elasticdog/subscriptions","organizations_url":"https://api.github.com/users/elasticdog/orgs","repos_url":"https://api.github.com/users/elasticdog/repos","events_url":"https://api.github.com/users/elasticdog/events{/privacy}","received_events_url":"https://api.github.com/users/elasticdog/received_events","type":"User","site_admin":false},"repo":{"id":16638318,"name":"transcrypt","full_name":"elasticdog/transcrypt","owner":{"login":"elasticdog","id":4742,"avatar_url":"https://avatars.githubusercontent.com/u/4742?v=3","gravatar_id":"","url":"https://api.github.com/users/elasticdog","html_url":"https://github.com/elasticdog","followers_url":"https://api.github.com/users/elasticdog/followers","following_url":"https://api.github.com/users/elasticdog/following{/other_user}","gists_url":"https://api.github.com/users/elasticdog/gists{/gist_id}","starred_url":"https://api.github.com/users/elasticdog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elasticdog/subscriptions","organizations_url":"https://api.github.com/users/elasticdog/orgs","repos_url":"https://api.github.com/users/elasticdog/repos","events_url":"https://api.github.com/users/elasticdog/events{/privacy}","received_events_url":"https://api.github.com/users/elasticdog/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/elasticdog/transcrypt","description":"transparently encrypt files within a git repository","fork":false,"url":"https://api.github.com/repos/elasticdog/transcrypt","forks_url":"https://api.github.com/repos/elasticdog/transcrypt/forks","keys_url":"https://api.github.com/repos/elasticdog/transcrypt/keys{/key_id}","collaborators_url":"https://api.github.com/repos/elasticdog/transcrypt/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/elasticdog/transcrypt/teams","hooks_url":"https://api.github.com/repos/elasticdog/transcrypt/hooks","issue_events_url":"https://api.github.com/repos/elasticdog/transcrypt/issues/events{/number}","events_url":"https://api.github.com/repos/elasticdog/transcrypt/events","assignees_url":"https://api.github.com/repos/elasticdog/transcrypt/assignees{/user}","branches_url":"https://api.github.com/repos/elasticdog/transcrypt/branches{/branch}","tags_url":"https://api.github.com/repos/elasticdog/transcrypt/tags","blobs_url":"https://api.github.com/repos/elasticdog/transcrypt/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/elasticdog/transcrypt/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/elasticdog/transcrypt/git/refs{/sha}","trees_url":"https://api.github.com/repos/elasticdog/transcrypt/git/trees{/sha}","statuses_url":"https://api.github.com/repos/elasticdog/transcrypt/statuses/{sha}","languages_url":"https://api.github.com/repos/elasticdog/transcrypt/languages","stargazers_url":"https://api.github.com/repos/elasticdog/transcrypt/stargazers","contributors_url":"https://api.github.com/repos/elasticdog/transcrypt/contributors","subscribers_url":"https://api.github.com/repos/elasticdog/transcrypt/subscribers","subscription_url":"https://api.github.com/repos/elasticdog/transcrypt/subscription","commits_url":"https://api.github.com/repos/elasticdog/transcrypt/commits{/sha}","git_commits_url":"https://api.github.com/repos/elasticdog/transcrypt/git/commits{/sha}","comments_url":"https://api.github.com/repos/elasticdog/transcrypt/comments{/number}","issue_comment_url":"https://api.github.com/repos/elasticdog/transcrypt/issues/comments{/number}","contents_url":"https://api.github.com/repos/elasticdog/transcrypt/contents/{+path}","compare_url":"https://api.github.com/repos/elasticdog/transcrypt/compare/{base}...{head}","merges_url":"https://api.github.com/repos/elasticdog/transcrypt/merges","archive_url":"https://api.github.com/repos/elasticdog/transcrypt/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/elasticdog/transcrypt/downloads","issues_url":"https://api.github.com/repos/elasticdog/transcrypt/issues{/number}","pulls_url":"https://api.github.com/repos/elasticdog/transcrypt/pulls{/number}","milestones_url":"https://api.github.com/repos/elasticdog/transcrypt/milestones{/number}","notifications_url":"https://api.github.com/repos/elasticdog/transcrypt/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/elasticdog/transcrypt/labels{/name}","releases_url":"https://api.github.com/repos/elasticdog/transcrypt/releases{/id}","deployments_url":"https://api.github.com/repos/elasticdog/transcrypt/deployments","created_at":"2014-02-08T07:18:33Z","updated_at":"2016-09-03T16:02:15Z","pushed_at":"2016-09-04T17:51:26Z","git_url":"git://github.com/elasticdog/transcrypt.git","ssh_url":"git@github.com:elasticdog/transcrypt.git","clone_url":"https://github.com/elasticdog/transcrypt.git","svn_url":"https://github.com/elasticdog/transcrypt","homepage":null,"size":171,"stargazers_count":474,"watchers_count":474,"language":"Shell","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":25,"mirror_url":null,"open_issues_count":4,"forks":25,"open_issues":4,"watchers":474,"default_branch":"master"}},"base":{"label":"elasticdog:master","ref":"master","sha":"318eab2c1120749ea0bf87bc24a050e9b470f5e3","user":{"login":"elasticdog","id":4742,"avatar_url":"https://avatars.githubusercontent.com/u/4742?v=3","gravatar_id":"","url":"https://api.github.com/users/elasticdog","html_url":"https://github.com/elasticdog","followers_url":"https://api.github.com/users/elasticdog/followers","following_url":"https://api.github.com/users/elasticdog/following{/other_user}","gists_url":"https://api.github.com/users/elasticdog/gists{/gist_id}","starred_url":"https://api.github.com/users/elasticdog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elasticdog/subscriptions","organizations_url":"https://api.github.com/users/elasticdog/orgs","repos_url":"https://api.github.com/users/elasticdog/repos","events_url":"https://api.github.com/users/elasticdog/events{/privacy}","received_events_url":"https://api.github.com/users/elasticdog/received_events","type":"User","site_admin":false},"repo":{"id":16638318,"name":"transcrypt","full_name":"elasticdog/transcrypt","owner":{"login":"elasticdog","id":4742,"avatar_url":"https://avatars.githubusercontent.com/u/4742?v=3","gravatar_id":"","url":"https://api.github.com/users/elasticdog","html_url":"https://github.com/elasticdog","followers_url":"https://api.github.com/users/elasticdog/followers","following_url":"https://api.github.com/users/elasticdog/following{/other_user}","gists_url":"https://api.github.com/users/elasticdog/gists{/gist_id}","starred_url":"https://api.github.com/users/elasticdog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elasticdog/subscriptions","organizations_url":"https://api.github.com/users/elasticdog/orgs","repos_url":"https://api.github.com/users/elasticdog/repos","events_url":"https://api.github.com/users/elasticdog/events{/privacy}","received_events_url":"https://api.github.com/users/elasticdog/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/elasticdog/transcrypt","description":"transparently encrypt files within a git repository","fork":false,"url":"https://api.github.com/repos/elasticdog/transcrypt","forks_url":"https://api.github.com/repos/elasticdog/transcrypt/forks","keys_url":"https://api.github.com/repos/elasticdog/transcrypt/keys{/key_id}","collaborators_url":"https://api.github.com/repos/elasticdog/transcrypt/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/elasticdog/transcrypt/teams","hooks_url":"https://api.github.com/repos/elasticdog/transcrypt/hooks","issue_events_url":"https://api.github.com/repos/elasticdog/transcrypt/issues/events{/number}","events_url":"https://api.github.com/repos/elasticdog/transcrypt/events","assignees_url":"https://api.github.com/repos/elasticdog/transcrypt/assignees{/user}","branches_url":"https://api.github.com/repos/elasticdog/transcrypt/branches{/branch}","tags_url":"https://api.github.com/repos/elasticdog/transcrypt/tags","blobs_url":"https://api.github.com/repos/elasticdog/transcrypt/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/elasticdog/transcrypt/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/elasticdog/transcrypt/git/refs{/sha}","trees_url":"https://api.github.com/repos/elasticdog/transcrypt/git/trees{/sha}","statuses_url":"https://api.github.com/repos/elasticdog/transcrypt/statuses/{sha}","languages_url":"https://api.github.com/repos/elasticdog/transcrypt/languages","stargazers_url":"https://api.github.com/repos/elasticdog/transcrypt/stargazers","contributors_url":"https://api.github.com/repos/elasticdog/transcrypt/contributors","subscribers_url":"https://api.github.com/repos/elasticdog/transcrypt/subscribers","subscription_url":"https://api.github.com/repos/elasticdog/transcrypt/subscription","commits_url":"https://api.github.com/repos/elasticdog/transcrypt/commits{/sha}","git_commits_url":"https://api.github.com/repos/elasticdog/transcrypt/git/commits{/sha}","comments_url":"https://api.github.com/repos/elasticdog/transcrypt/comments{/number}","issue_comment_url":"https://api.github.com/repos/elasticdog/transcrypt/issues/comments{/number}","contents_url":"https://api.github.com/repos/elasticdog/transcrypt/contents/{+path}","compare_url":"https://api.github.com/repos/elasticdog/transcrypt/compare/{base}...{head}","merges_url":"https://api.github.com/repos/elasticdog/transcrypt/merges","archive_url":"https://api.github.com/repos/elasticdog/transcrypt/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/elasticdog/transcrypt/downloads","issues_url":"https://api.github.com/repos/elasticdog/transcrypt/issues{/number}","pulls_url":"https://api.github.com/repos/elasticdog/transcrypt/pulls{/number}","milestones_url":"https://api.github.com/repos/elasticdog/transcrypt/milestones{/number}","notifications_url":"https://api.github.com/repos/elasticdog/transcrypt/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/elasticdog/transcrypt/labels{/name}","releases_url":"https://api.github.com/repos/elasticdog/transcrypt/releases{/id}","deployments_url":"https://api.github.com/repos/elasticdog/transcrypt/deployments","created_at":"2014-02-08T07:18:33Z","updated_at":"2016-09-03T16:02:15Z","pushed_at":"2016-09-04T17:51:26Z","git_url":"git://github.com/elasticdog/transcrypt.git","ssh_url":"git@github.com:elasticdog/transcrypt.git","clone_url":"https://github.com/elasticdog/transcrypt.git","svn_url":"https://github.com/elasticdog/transcrypt","homepage":null,"size":171,"stargazers_count":474,"watchers_count":474,"language":"Shell","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":25,"mirror_url":null,"open_issues_count":4,"forks":25,"open_issues":4,"watchers":474,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/elasticdog/transcrypt/pulls/30"},"html":{"href":"https://github.com/elasticdog/transcrypt/pull/30"},"issue":{"href":"https://api.github.com/repos/elasticdog/transcrypt/issues/30"},"comments":{"href":"https://api.github.com/repos/elasticdog/transcrypt/issues/30/comments"},"review_comments":{"href":"https://api.github.com/repos/elasticdog/transcrypt/pulls/30/comments"},"review_comment":{"href":"https://api.github.com/repos/elasticdog/transcrypt/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/elasticdog/transcrypt/pulls/30/commits"},"statuses":{"href":"https://api.github.com/repos/elasticdog/transcrypt/statuses/fbc611d7dfdf973023d72796564ca2e2141e1155"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"elasticdog","id":4742,"avatar_url":"https://avatars.githubusercontent.com/u/4742?v=3","gravatar_id":"","url":"https://api.github.com/users/elasticdog","html_url":"https://github.com/elasticdog","followers_url":"https://api.github.com/users/elasticdog/followers","following_url":"https://api.github.com/users/elasticdog/following{/other_user}","gists_url":"https://api.github.com/users/elasticdog/gists{/gist_id}","starred_url":"https://api.github.com/users/elasticdog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elasticdog/subscriptions","organizations_url":"https://api.github.com/users/elasticdog/orgs","repos_url":"https://api.github.com/users/elasticdog/repos","events_url":"https://api.github.com/users/elasticdog/events{/privacy}","received_events_url":"https://api.github.com/users/elasticdog/received_events","type":"User","site_admin":false},"comments":1,"review_comments":0,"commits":8,"additions":110,"deletions":46,"changed_files":1}}
{"actor":{"display_login":"elasticdog"}}