git-duet 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.ruby-version +1 -1
 - data/.simplecov +2 -6
 - data/.travis.yml +15 -5
 - data/Gemfile +2 -0
 - data/LICENSE +1 -1
 - data/README.md +3 -0
 - data/Rakefile +2 -2
 - data/lib/git/duet/author_mapper.rb +2 -2
 - data/lib/git/duet/cli.rb +13 -11
 - data/lib/git/duet/command_methods.rb +7 -8
 - data/lib/git/duet/duet_command.rb +14 -10
 - data/lib/git/duet/pre_commit_command.rb +1 -1
 - data/lib/git/duet/solo_command.rb +1 -1
 - data/lib/git/duet/version.rb +1 -1
 - data/spec/integration/end_to_end_spec.rb +23 -9
 - data/spec/lib/git/duet/author_mapper_spec.rb +3 -2
 - data/spec/spec_helper.rb +2 -0
 - metadata +32 -17
 - checksums.yaml +0 -7
 
    
        data/.ruby-version
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            2. 
     | 
| 
      
 1 
     | 
    
         
            +
            2.1.0
         
     | 
    
        data/.simplecov
    CHANGED
    
    
    
        data/.travis.yml
    CHANGED
    
    | 
         @@ -1,16 +1,26 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ---
         
     | 
| 
       2 
1 
     | 
    
         
             
            language: ruby
         
     | 
| 
       3 
2 
     | 
    
         
             
            env:
         
     | 
| 
       4 
3 
     | 
    
         
             
              global:
         
     | 
| 
       5 
     | 
    
         
            -
              -  
     | 
| 
      
 4 
     | 
    
         
            +
              - COVERAGE=1
         
     | 
| 
       6 
5 
     | 
    
         
             
            matrix:
         
     | 
| 
       7 
6 
     | 
    
         
             
              allow_failures:
         
     | 
| 
       8 
7 
     | 
    
         
             
              - rvm: jruby-19mode
         
     | 
| 
       9 
8 
     | 
    
         
             
            rvm:
         
     | 
| 
       10 
9 
     | 
    
         
             
            - 1.9.3
         
     | 
| 
       11 
10 
     | 
    
         
             
            - 2.0.0
         
     | 
| 
      
 11 
     | 
    
         
            +
            - 2.1.0
         
     | 
| 
       12 
12 
     | 
    
         
             
            - jruby-19mode
         
     | 
| 
       13 
13 
     | 
    
         
             
            notifications:
         
     | 
| 
       14 
     | 
    
         
            -
              email:
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
              email: github+git-duet@modcloth.com
         
     | 
| 
      
 15 
     | 
    
         
            +
            deploy:
         
     | 
| 
      
 16 
     | 
    
         
            +
              provider: rubygems
         
     | 
| 
      
 17 
     | 
    
         
            +
              api_key:
         
     | 
| 
      
 18 
     | 
    
         
            +
                secure: aW7HYNkTGp3N8awbuJtDfko1CXBDTzElggAOQsA4p//V06Q/qH7ZTNZxPTf5/bPlmjDRgttMVv+zm3YGgb4pFdHzSWI+McLf+eI6g2I8s/Sp/GZQ2+dxH1wBqPtMhSI/Rv7R+J6GznALjKhM/PnNpPl6gsWePFbMebhKgKUvcHo=
         
     | 
| 
      
 19 
     | 
    
         
            +
              gem: git-duet
         
     | 
| 
      
 20 
     | 
    
         
            +
              on:
         
     | 
| 
      
 21 
     | 
    
         
            +
                tags: true
         
     | 
| 
      
 22 
     | 
    
         
            +
                repo: modcloth/git-duet
         
     | 
| 
      
 23 
     | 
    
         
            +
            addons:
         
     | 
| 
      
 24 
     | 
    
         
            +
              code_climate:
         
     | 
| 
      
 25 
     | 
    
         
            +
                repo_token:
         
     | 
| 
      
 26 
     | 
    
         
            +
                  secure: A/K+dw6//V8WkB4PapKa1BqEGbwxWbhvHSCFKe+CnHSJ19vDbij2C1x8uzh3NpYTI+B9a5/p9r0B8AmVFI2hKU5CIdGiqMd+sEMM/OzSBeMTIO8d0NKJRfJEGH9yRSlka3cpwLMKmbdPorYnI0iKdVvWLabPhzneK8qYCgHMSWw=
         
     | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/LICENSE
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -2,6 +2,9 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            [](http://badge.fury.io/rb/git-duet)
         
     | 
| 
       4 
4 
     | 
    
         
             
            [](https://travis-ci.org/modcloth/git-duet)
         
     | 
| 
      
 5 
     | 
    
         
            +
            [](https://codeclimate.com/repos/52b6ea7089af7e2ddc0b1f3c/feed)
         
     | 
| 
      
 6 
     | 
    
         
            +
            [](https://gemnasium.com/modcloth/git-duet)
         
     | 
| 
       5 
8 
     | 
    
         | 
| 
       6 
9 
     | 
    
         
             
            Pair harmoniously!  Working in a pair doesn't mean you've both lost your
         
     | 
| 
       7 
10 
     | 
    
         
             
            identity.  Git Duet helps with blaming/praising by using stuff that's
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #!/usr/bin/env rake
         
     | 
| 
       2 
2 
     | 
    
         
             
            # vim:fileencoding=utf-8
         
     | 
| 
       3 
     | 
    
         
            -
            require  
     | 
| 
      
 3 
     | 
    
         
            +
            require 'bundler/gem_tasks'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            require 'rspec/core/rake_task'
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
         @@ -13,4 +13,4 @@ RSpec::Core::RakeTask.new(:spec) do |t| 
     | 
|
| 
       13 
13 
     | 
    
         
             
              t.rspec_opts = '--format documentation'
         
     | 
| 
       14 
14 
     | 
    
         
             
            end
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
            task : 
     | 
| 
      
 16 
     | 
    
         
            +
            task default: [:rubocop, :spec]
         
     | 
| 
         @@ -53,7 +53,7 @@ class Git::Duet::AuthorMapper 
     | 
|
| 
       53 
53 
     | 
    
         
             
                return ERB.new(email_template).result(binding)
         
     | 
| 
       54 
54 
     | 
    
         
             
              rescue StandardError => e
         
     | 
| 
       55 
55 
     | 
    
         
             
                $stderr.puts("git-duet: email template rendering error: #{e.message}")
         
     | 
| 
       56 
     | 
    
         
            -
                raise Git::Duet::ScriptDieError 
     | 
| 
      
 56 
     | 
    
         
            +
                raise Git::Duet::ScriptDieError, 8
         
     | 
| 
       57 
57 
     | 
    
         
             
              end
         
     | 
| 
       58 
58 
     | 
    
         | 
| 
       59 
59 
     | 
    
         
             
              def author_map
         
     | 
| 
         @@ -76,6 +76,6 @@ class Git::Duet::AuthorMapper 
     | 
|
| 
       76 
76 
     | 
    
         
             
                @cfg ||= YAML.load(IO.read(authors_file))
         
     | 
| 
       77 
77 
     | 
    
         
             
              rescue StandardError => e
         
     | 
| 
       78 
78 
     | 
    
         
             
                $stderr.puts("git-duet: Missing or corrupt authors file: #{e.message}")
         
     | 
| 
       79 
     | 
    
         
            -
                raise Git::Duet::ScriptDieError 
     | 
| 
      
 79 
     | 
    
         
            +
                raise Git::Duet::ScriptDieError, 3
         
     | 
| 
       80 
80 
     | 
    
         
             
              end
         
     | 
| 
       81 
81 
     | 
    
         
             
            end
         
     | 
    
        data/lib/git/duet/cli.rb
    CHANGED
    
    | 
         @@ -11,7 +11,7 @@ class Git::Duet::Cli 
     | 
|
| 
       11 
11 
     | 
    
         
             
                  send(method_name, parse_options(method_name, argv.clone))
         
     | 
| 
       12 
12 
     | 
    
         
             
                  0
         
     | 
| 
       13 
13 
     | 
    
         
             
                rescue NoMethodError
         
     | 
| 
       14 
     | 
    
         
            -
                  raise ScriptError 
     | 
| 
      
 14 
     | 
    
         
            +
                  raise ScriptError, 'How did you get here???'
         
     | 
| 
       15 
15 
     | 
    
         
             
                rescue Git::Duet::ScriptDieError => e
         
     | 
| 
       16 
16 
     | 
    
         
             
                  e.exit_code
         
     | 
| 
       17 
17 
     | 
    
         
             
                end
         
     | 
| 
         @@ -40,26 +40,28 @@ class Git::Duet::Cli 
     | 
|
| 
       40 
40 
     | 
    
         
             
                end
         
     | 
| 
       41 
41 
     | 
    
         | 
| 
       42 
42 
     | 
    
         
             
                def parse_solo_options(argv)
         
     | 
| 
       43 
     | 
    
         
            -
                   
     | 
| 
       44 
     | 
    
         
            -
                    argv, ' 
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                    opts.on('-g', '--global', 'Change global git config') do |g|
         
     | 
| 
       47 
     | 
    
         
            -
                      options_hash[:global] = true
         
     | 
| 
       48 
     | 
    
         
            -
                    end
         
     | 
| 
      
 43 
     | 
    
         
            +
                  parse_options_with_positional_args(
         
     | 
| 
      
 44 
     | 
    
         
            +
                    argv, '<soloist-initials>') do |leftover_argv, options|
         
     | 
| 
      
 45 
     | 
    
         
            +
                    options[:soloist] = leftover_argv.first
         
     | 
| 
       49 
46 
     | 
    
         
             
                  end
         
     | 
| 
       50 
     | 
    
         
            -
                  options[:soloist] = leftover_argv.first
         
     | 
| 
       51 
     | 
    
         
            -
                  options
         
     | 
| 
       52 
47 
     | 
    
         
             
                end
         
     | 
| 
       53 
48 
     | 
    
         | 
| 
       54 
49 
     | 
    
         
             
                def parse_duet_options(argv)
         
     | 
| 
      
 50 
     | 
    
         
            +
                  parse_options_with_positional_args(
         
     | 
| 
      
 51 
     | 
    
         
            +
                    argv, '<alpha-initials> <omega-initials>') do |leftover_argv, options|
         
     | 
| 
      
 52 
     | 
    
         
            +
                    options[:alpha], options[:omega] = leftover_argv[0..1]
         
     | 
| 
      
 53 
     | 
    
         
            +
                  end
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                def parse_options_with_positional_args(argv, usage)
         
     | 
| 
       55 
57 
     | 
    
         
             
                  leftover_argv, options = with_common_opts(
         
     | 
| 
       56 
     | 
    
         
            -
                    argv, 'Usage: __PROG__ [options]  
     | 
| 
      
 58 
     | 
    
         
            +
                    argv, 'Usage: __PROG__ [options] ' << usage
         
     | 
| 
       57 
59 
     | 
    
         
             
                  ) do |opts, options_hash|
         
     | 
| 
       58 
60 
     | 
    
         
             
                    opts.on('-g', '--global', 'Change global git config') do |g|
         
     | 
| 
       59 
61 
     | 
    
         
             
                      options_hash[:global] = true
         
     | 
| 
       60 
62 
     | 
    
         
             
                    end
         
     | 
| 
       61 
63 
     | 
    
         
             
                  end
         
     | 
| 
       62 
     | 
    
         
            -
                   
     | 
| 
      
 64 
     | 
    
         
            +
                  yield leftover_argv, options
         
     | 
| 
       63 
65 
     | 
    
         
             
                  options
         
     | 
| 
       64 
66 
     | 
    
         
             
                end
         
     | 
| 
       65 
67 
     | 
    
         | 
| 
         @@ -4,7 +4,6 @@ require 'git/duet' 
     | 
|
| 
       4 
4 
     | 
    
         
             
            require 'git/duet/script_die_error'
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            module Git::Duet::CommandMethods
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
7 
     | 
    
         
             
              private
         
     | 
| 
       9 
8 
     | 
    
         | 
| 
       10 
9 
     | 
    
         
             
              def report_env_vars
         
     | 
| 
         @@ -31,24 +30,24 @@ module Git::Duet::CommandMethods 
     | 
|
| 
       31 
30 
     | 
    
         
             
              end
         
     | 
| 
       32 
31 
     | 
    
         | 
| 
       33 
32 
     | 
    
         
             
              def author_env_vars_set?
         
     | 
| 
       34 
     | 
    
         
            -
                %x(#{ 
     | 
| 
      
 33 
     | 
    
         
            +
                %x(#{author_name_command} && #{author_email_command})
         
     | 
| 
       35 
34 
     | 
    
         
             
                $CHILD_STATUS == 0
         
     | 
| 
       36 
35 
     | 
    
         
             
              end
         
     | 
| 
       37 
36 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
              def  
     | 
| 
      
 37 
     | 
    
         
            +
              def author_name_command
         
     | 
| 
       39 
38 
     | 
    
         
             
                "git config --get #{Git::Duet::Config.namespace}.git-author-name"
         
     | 
| 
       40 
39 
     | 
    
         
             
              end
         
     | 
| 
       41 
40 
     | 
    
         | 
| 
       42 
     | 
    
         
            -
              def  
     | 
| 
      
 41 
     | 
    
         
            +
              def author_email_command
         
     | 
| 
       43 
42 
     | 
    
         
             
                "git config --get #{Git::Duet::Config.namespace}.git-author-email"
         
     | 
| 
       44 
43 
     | 
    
         
             
              end
         
     | 
| 
       45 
44 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
              def  
     | 
| 
      
 45 
     | 
    
         
            +
              def current_config_command
         
     | 
| 
       47 
46 
     | 
    
         
             
                "git config --get-regexp #{Git::Duet::Config.namespace}"
         
     | 
| 
       48 
47 
     | 
    
         
             
              end
         
     | 
| 
       49 
48 
     | 
    
         | 
| 
       50 
49 
     | 
    
         
             
              def show_current_config
         
     | 
| 
       51 
     | 
    
         
            -
                info(exec_check( 
     | 
| 
      
 50 
     | 
    
         
            +
                info(exec_check(current_config_command))
         
     | 
| 
       52 
51 
     | 
    
         
             
              end
         
     | 
| 
       53 
52 
     | 
    
         | 
| 
       54 
53 
     | 
    
         
             
              def dump_env_vars
         
     | 
| 
         @@ -78,7 +77,7 @@ module Git::Duet::CommandMethods 
     | 
|
| 
       78 
77 
     | 
    
         
             
                if author_env_vars_set?
         
     | 
| 
       79 
78 
     | 
    
         
             
                  exec 'git commit ' << signoff_arg << quoted_passthrough_args
         
     | 
| 
       80 
79 
     | 
    
         
             
                else
         
     | 
| 
       81 
     | 
    
         
            -
                   
     | 
| 
      
 80 
     | 
    
         
            +
                  fail Git::Duet::ScriptDieError, 17
         
     | 
| 
       82 
81 
     | 
    
         
             
                end
         
     | 
| 
       83 
82 
     | 
    
         
             
              end
         
     | 
| 
       84 
83 
     | 
    
         | 
| 
         @@ -92,7 +91,7 @@ module Git::Duet::CommandMethods 
     | 
|
| 
       92 
91 
     | 
    
         
             
                output = `#{command}`
         
     | 
| 
       93 
92 
     | 
    
         
             
                unless okay_statuses.include?($CHILD_STATUS.exitstatus)
         
     | 
| 
       94 
93 
     | 
    
         
             
                  error("Command #{command.inspect} exited with #{$CHILD_STATUS.to_i}")
         
     | 
| 
       95 
     | 
    
         
            -
                   
     | 
| 
      
 94 
     | 
    
         
            +
                  fail Git::Duet::ScriptDieError, 1
         
     | 
| 
       96 
95 
     | 
    
         
             
                end
         
     | 
| 
       97 
96 
     | 
    
         
             
                output
         
     | 
| 
       98 
97 
     | 
    
         
             
              end
         
     | 
| 
         @@ -28,8 +28,11 @@ class Git::Duet::DuetCommand 
     | 
|
| 
       28 
28 
     | 
    
         
             
              attr_accessor :alpha, :omega, :author_mapper
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
              def set_alpha_as_git_config_user
         
     | 
| 
       31 
     | 
    
         
            -
                 
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 31 
     | 
    
         
            +
                %w(name email).each do |setting|
         
     | 
| 
      
 32 
     | 
    
         
            +
                  exec_check(
         
     | 
| 
      
 33 
     | 
    
         
            +
                    "#{git_config} user.#{setting} '#{alpha_info[setting.to_sym]}'"
         
     | 
| 
      
 34 
     | 
    
         
            +
                  )
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
       33 
36 
     | 
    
         
             
              end
         
     | 
| 
       34 
37 
     | 
    
         | 
| 
       35 
38 
     | 
    
         
             
              def var_map
         
     | 
| 
         @@ -42,20 +45,21 @@ class Git::Duet::DuetCommand 
     | 
|
| 
       42 
45 
     | 
    
         
             
              end
         
     | 
| 
       43 
46 
     | 
    
         | 
| 
       44 
47 
     | 
    
         
             
              def alpha_info
         
     | 
| 
       45 
     | 
    
         
            -
                 
     | 
| 
       46 
     | 
    
         
            -
              rescue KeyError, IndexError => e
         
     | 
| 
       47 
     | 
    
         
            -
                error("git-duet: Failed to find author: #{e}")
         
     | 
| 
       48 
     | 
    
         
            -
                raise Git::Duet::ScriptDieError.new(86)
         
     | 
| 
      
 48 
     | 
    
         
            +
                fetch_info(alpha, 'author')
         
     | 
| 
       49 
49 
     | 
    
         
             
              end
         
     | 
| 
       50 
50 
     | 
    
         | 
| 
       51 
51 
     | 
    
         
             
              def omega_info
         
     | 
| 
       52 
     | 
    
         
            -
                 
     | 
| 
      
 52 
     | 
    
         
            +
                fetch_info(omega, 'committer')
         
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
              def fetch_info(which, desc)
         
     | 
| 
      
 56 
     | 
    
         
            +
                alpha_omega_info.fetch(which)
         
     | 
| 
       53 
57 
     | 
    
         
             
              rescue KeyError, IndexError => e
         
     | 
| 
       54 
     | 
    
         
            -
                error("git-duet: Failed to find  
     | 
| 
       55 
     | 
    
         
            -
                raise Git::Duet::ScriptDieError 
     | 
| 
      
 58 
     | 
    
         
            +
                error("git-duet: Failed to find #{desc}: #{e}")
         
     | 
| 
      
 59 
     | 
    
         
            +
                raise Git::Duet::ScriptDieError, 86
         
     | 
| 
       56 
60 
     | 
    
         
             
              end
         
     | 
| 
       57 
61 
     | 
    
         | 
| 
       58 
62 
     | 
    
         
             
              def alpha_omega_info
         
     | 
| 
       59 
     | 
    
         
            -
                @alpha_omega_info ||= author_mapper.map( 
     | 
| 
      
 63 
     | 
    
         
            +
                @alpha_omega_info ||= author_mapper.map(alpha, omega)
         
     | 
| 
       60 
64 
     | 
    
         
             
              end
         
     | 
| 
       61 
65 
     | 
    
         
             
            end
         
     | 
| 
         @@ -21,7 +21,7 @@ class Git::Duet::PreCommitCommand 
     | 
|
| 
       21 
21 
     | 
    
         
             
              def explode!
         
     | 
| 
       22 
22 
     | 
    
         
             
                error('Your git duet settings are stale, human!')
         
     | 
| 
       23 
23 
     | 
    
         
             
                error('Update them with `git duet` or `git solo`.')
         
     | 
| 
       24 
     | 
    
         
            -
                 
     | 
| 
      
 24 
     | 
    
         
            +
                fail Git::Duet::ScriptDieError, 1
         
     | 
| 
       25 
25 
     | 
    
         
             
              end
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
              def env_cache_exists?
         
     | 
| 
         @@ -57,6 +57,6 @@ class Git::Duet::SoloCommand 
     | 
|
| 
       57 
57 
     | 
    
         
             
                @soloist_info ||= author_mapper.map(@soloist).fetch(@soloist)
         
     | 
| 
       58 
58 
     | 
    
         
             
              rescue KeyError, IndexError => e
         
     | 
| 
       59 
59 
     | 
    
         
             
                error("git-solo: Failed to find author: #{e}")
         
     | 
| 
       60 
     | 
    
         
            -
                raise Git::Duet::ScriptDieError 
     | 
| 
      
 60 
     | 
    
         
            +
                raise Git::Duet::ScriptDieError, 86
         
     | 
| 
       61 
61 
     | 
    
         
             
              end
         
     | 
| 
       62 
62 
     | 
    
         
             
            end
         
     | 
    
        data/lib/git/duet/version.rb
    CHANGED
    
    
| 
         @@ -12,26 +12,32 @@ describe 'git-duet end to end', integration: true do 
     | 
|
| 
       12 
12 
     | 
    
         
             
              EOF
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
              def install_hook
         
     | 
| 
       15 
     | 
    
         
            -
                Dir.chdir(@repo_dir)
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
                Dir.chdir(@repo_dir) do
         
     | 
| 
      
 16 
     | 
    
         
            +
                  `git duet-install-hook -q`
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
       17 
18 
     | 
    
         
             
              end
         
     | 
| 
       18 
19 
     | 
    
         | 
| 
       19 
20 
     | 
    
         
             
              def uninstall_hook
         
     | 
| 
       20 
     | 
    
         
            -
                 
     | 
| 
      
 21 
     | 
    
         
            +
                Dir.chdir(@repo_dir) do
         
     | 
| 
      
 22 
     | 
    
         
            +
                  FileUtils.rm_f('.git/hooks/pre-commit')
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
       21 
24 
     | 
    
         
             
              end
         
     | 
| 
       22 
25 
     | 
    
         | 
| 
       23 
26 
     | 
    
         
             
              def make_an_edit
         
     | 
| 
       24 
     | 
    
         
            -
                Dir.chdir(@repo_dir)
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
      
 27 
     | 
    
         
            +
                Dir.chdir(@repo_dir) do
         
     | 
| 
      
 28 
     | 
    
         
            +
                  File.open('file.txt', 'w') { |f| f.puts "foo-#{rand(100_000)}" }
         
     | 
| 
      
 29 
     | 
    
         
            +
                  `git add file.txt`
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
       27 
31 
     | 
    
         
             
              end
         
     | 
| 
       28 
32 
     | 
    
         | 
| 
       29 
33 
     | 
    
         
             
              before :all do
         
     | 
| 
       30 
34 
     | 
    
         
             
                ENV['GIT_DUET_CONFIG_NAMESPACE'] = 'foo.bar'
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
       31 
36 
     | 
    
         
             
                @startdir = Dir.pwd
         
     | 
| 
       32 
37 
     | 
    
         
             
                @tmpdir = Dir.mktmpdir('git-duet-specs')
         
     | 
| 
       33 
38 
     | 
    
         
             
                @git_authors = File.join(@tmpdir, '.git-authors')
         
     | 
| 
       34 
39 
     | 
    
         
             
                @email_lookup_path = File.join(@tmpdir, 'email-lookup')
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       35 
41 
     | 
    
         
             
                File.open(@git_authors, 'w') do |f|
         
     | 
| 
       36 
42 
     | 
    
         
             
                  f.puts YAML.dump(
         
     | 
| 
       37 
43 
     | 
    
         
             
                    'pairs' => {
         
     | 
| 
         @@ -48,13 +54,17 @@ describe 'git-duet end to end', integration: true do 
     | 
|
| 
       48 
54 
     | 
    
         
             
                  )
         
     | 
| 
       49 
55 
     | 
    
         
             
                end
         
     | 
| 
       50 
56 
     | 
    
         
             
                ENV['GIT_DUET_AUTHORS_FILE'] = @git_authors
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
       51 
58 
     | 
    
         
             
                top_bin = File.expand_path('../../../bin', __FILE__)
         
     | 
| 
       52 
59 
     | 
    
         
             
                ENV['PATH'] = "#{top_bin}:#{ENV['PATH']}"
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
       53 
61 
     | 
    
         
             
                File.open(@email_lookup_path, 'w') { |f| f.puts EMAIL_LOOKUP_SCRIPT }
         
     | 
| 
       54 
62 
     | 
    
         
             
                FileUtils.chmod(0755, @email_lookup_path)
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
       55 
64 
     | 
    
         
             
                @repo_dir = File.join(@tmpdir, 'foo')
         
     | 
| 
       56 
     | 
    
         
            -
                Dir.chdir(@tmpdir)
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
      
 65 
     | 
    
         
            +
                Dir.chdir(@tmpdir) do
         
     | 
| 
      
 66 
     | 
    
         
            +
                  `git init #{@repo_dir}`
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
       58 
68 
     | 
    
         
             
              end
         
     | 
| 
       59 
69 
     | 
    
         | 
| 
       60 
70 
     | 
    
         
             
              after :all do
         
     | 
| 
         @@ -69,7 +79,11 @@ describe 'git-duet end to end', integration: true do 
     | 
|
| 
       69 
79 
     | 
    
         
             
              end
         
     | 
| 
       70 
80 
     | 
    
         | 
| 
       71 
81 
     | 
    
         
             
              context 'when installing the pre-commit hook' do
         
     | 
| 
       72 
     | 
    
         
            -
                before(:each)  
     | 
| 
      
 82 
     | 
    
         
            +
                before(:each) do
         
     | 
| 
      
 83 
     | 
    
         
            +
                  Dir.chdir(@repo_dir)
         
     | 
| 
      
 84 
     | 
    
         
            +
                  install_hook
         
     | 
| 
      
 85 
     | 
    
         
            +
                end
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
       73 
87 
     | 
    
         
             
                after(:each) { uninstall_hook }
         
     | 
| 
       74 
88 
     | 
    
         | 
| 
       75 
89 
     | 
    
         
             
                it 'writes the hook to the `pre-commit` hook file' do
         
     | 
| 
         @@ -3,7 +3,8 @@ require 'git/duet/author_mapper' 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            describe Git::Duet::AuthorMapper do
         
     | 
| 
       5 
5 
     | 
    
         
             
              before :each do
         
     | 
| 
       6 
     | 
    
         
            -
                subject.instance_variable_set( 
     | 
| 
      
 6 
     | 
    
         
            +
                subject.instance_variable_set(
         
     | 
| 
      
 7 
     | 
    
         
            +
                  :@cfg,
         
     | 
| 
       7 
8 
     | 
    
         
             
                  'authors' => {
         
     | 
| 
       8 
9 
     | 
    
         
             
                    'jd' => 'Jane Doe; jdoe',
         
     | 
| 
       9 
10 
     | 
    
         
             
                    'fb' => 'Frances Bar; frances',
         
     | 
| 
         @@ -16,7 +17,7 @@ describe Git::Duet::AuthorMapper do 
     | 
|
| 
       16 
17 
     | 
    
         
             
                  'email_addresses' => {
         
     | 
| 
       17 
18 
     | 
    
         
             
                    'jd' => 'jane@awesome.biz'
         
     | 
| 
       18 
19 
     | 
    
         
             
                  }
         
     | 
| 
       19 
     | 
    
         
            -
                 
     | 
| 
      
 20 
     | 
    
         
            +
                )
         
     | 
| 
       20 
21 
     | 
    
         
             
              end
         
     | 
| 
       21 
22 
     | 
    
         | 
| 
       22 
23 
     | 
    
         
             
              after :each do
         
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: git-duet
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.3.0
         
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
       5 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
7 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
8 
     | 
    
         
             
            - Dan Buch
         
     | 
| 
         @@ -11,76 +12,86 @@ authors: 
     | 
|
| 
       11 
12 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       12 
13 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       13 
14 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       14 
     | 
    
         
            -
            date:  
     | 
| 
      
 15 
     | 
    
         
            +
            date: 2014-02-23 00:00:00.000000000 Z
         
     | 
| 
       15 
16 
     | 
    
         
             
            dependencies:
         
     | 
| 
       16 
17 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       17 
18 
     | 
    
         
             
              name: rake
         
     | 
| 
       18 
19 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 20 
     | 
    
         
            +
                none: false
         
     | 
| 
       19 
21 
     | 
    
         
             
                requirements:
         
     | 
| 
       20 
     | 
    
         
            -
                - - '>='
         
     | 
| 
      
 22 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
       21 
23 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       22 
24 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       23 
25 
     | 
    
         
             
              type: :development
         
     | 
| 
       24 
26 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       25 
27 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 28 
     | 
    
         
            +
                none: false
         
     | 
| 
       26 
29 
     | 
    
         
             
                requirements:
         
     | 
| 
       27 
     | 
    
         
            -
                - - '>='
         
     | 
| 
      
 30 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
       28 
31 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       29 
32 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       30 
33 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       31 
34 
     | 
    
         
             
              name: rspec
         
     | 
| 
       32 
35 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 36 
     | 
    
         
            +
                none: false
         
     | 
| 
       33 
37 
     | 
    
         
             
                requirements:
         
     | 
| 
       34 
     | 
    
         
            -
                - - '>='
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
       35 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       36 
40 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       37 
41 
     | 
    
         
             
              type: :development
         
     | 
| 
       38 
42 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       39 
43 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 44 
     | 
    
         
            +
                none: false
         
     | 
| 
       40 
45 
     | 
    
         
             
                requirements:
         
     | 
| 
       41 
     | 
    
         
            -
                - - '>='
         
     | 
| 
      
 46 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
       42 
47 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       43 
48 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       44 
49 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       45 
50 
     | 
    
         
             
              name: rubocop
         
     | 
| 
       46 
51 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 52 
     | 
    
         
            +
                none: false
         
     | 
| 
       47 
53 
     | 
    
         
             
                requirements:
         
     | 
| 
       48 
     | 
    
         
            -
                - - '>='
         
     | 
| 
      
 54 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
       49 
55 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       50 
56 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       51 
57 
     | 
    
         
             
              type: :development
         
     | 
| 
       52 
58 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       53 
59 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 60 
     | 
    
         
            +
                none: false
         
     | 
| 
       54 
61 
     | 
    
         
             
                requirements:
         
     | 
| 
       55 
     | 
    
         
            -
                - - '>='
         
     | 
| 
      
 62 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
       56 
63 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       57 
64 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       58 
65 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       59 
66 
     | 
    
         
             
              name: pry
         
     | 
| 
       60 
67 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 68 
     | 
    
         
            +
                none: false
         
     | 
| 
       61 
69 
     | 
    
         
             
                requirements:
         
     | 
| 
       62 
     | 
    
         
            -
                - - '>='
         
     | 
| 
      
 70 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
       63 
71 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       64 
72 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       65 
73 
     | 
    
         
             
              type: :development
         
     | 
| 
       66 
74 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       67 
75 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 76 
     | 
    
         
            +
                none: false
         
     | 
| 
       68 
77 
     | 
    
         
             
                requirements:
         
     | 
| 
       69 
     | 
    
         
            -
                - - '>='
         
     | 
| 
      
 78 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
       70 
79 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       71 
80 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       72 
81 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       73 
82 
     | 
    
         
             
              name: simplecov
         
     | 
| 
       74 
83 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 84 
     | 
    
         
            +
                none: false
         
     | 
| 
       75 
85 
     | 
    
         
             
                requirements:
         
     | 
| 
       76 
     | 
    
         
            -
                - - '>='
         
     | 
| 
      
 86 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
       77 
87 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       78 
88 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       79 
89 
     | 
    
         
             
              type: :development
         
     | 
| 
       80 
90 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       81 
91 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 92 
     | 
    
         
            +
                none: false
         
     | 
| 
       82 
93 
     | 
    
         
             
                requirements:
         
     | 
| 
       83 
     | 
    
         
            -
                - - '>='
         
     | 
| 
      
 94 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
       84 
95 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       85 
96 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       86 
97 
     | 
    
         
             
            description: Pair programming git identity thingy
         
     | 
| 
         @@ -140,26 +151,30 @@ files: 
     | 
|
| 
       140 
151 
     | 
    
         
             
            homepage: https://github.com/modcloth/git-duet
         
     | 
| 
       141 
152 
     | 
    
         
             
            licenses:
         
     | 
| 
       142 
153 
     | 
    
         
             
            - MIT
         
     | 
| 
       143 
     | 
    
         
            -
            metadata: {}
         
     | 
| 
       144 
154 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       145 
155 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       146 
156 
     | 
    
         
             
            require_paths:
         
     | 
| 
       147 
157 
     | 
    
         
             
            - lib
         
     | 
| 
       148 
158 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 159 
     | 
    
         
            +
              none: false
         
     | 
| 
       149 
160 
     | 
    
         
             
              requirements:
         
     | 
| 
       150 
     | 
    
         
            -
              - - '>='
         
     | 
| 
      
 161 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
       151 
162 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       152 
163 
     | 
    
         
             
                  version: 1.9.3
         
     | 
| 
       153 
164 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 165 
     | 
    
         
            +
              none: false
         
     | 
| 
       154 
166 
     | 
    
         
             
              requirements:
         
     | 
| 
       155 
     | 
    
         
            -
              - - '>='
         
     | 
| 
      
 167 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
       156 
168 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       157 
169 
     | 
    
         
             
                  version: '0'
         
     | 
| 
      
 170 
     | 
    
         
            +
                  segments:
         
     | 
| 
      
 171 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 172 
     | 
    
         
            +
                  hash: -3828941408143458487
         
     | 
| 
       158 
173 
     | 
    
         
             
            requirements: []
         
     | 
| 
       159 
174 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       160 
     | 
    
         
            -
            rubygems_version:  
     | 
| 
      
 175 
     | 
    
         
            +
            rubygems_version: 1.8.23
         
     | 
| 
       161 
176 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       162 
     | 
    
         
            -
            specification_version:  
     | 
| 
      
 177 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
       163 
178 
     | 
    
         
             
            summary: Pair harmoniously!  Decide who's driving.  Commit along the way.  Don't make
         
     | 
| 
       164 
179 
     | 
    
         
             
              a mess of the repository history.
         
     | 
| 
       165 
180 
     | 
    
         
             
            test_files:
         
     | 
    
        checksums.yaml
    DELETED
    
    | 
         @@ -1,7 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ---
         
     | 
| 
       2 
     | 
    
         
            -
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz: 46323bd5392d627ae8bed46e4cd89f2bf8803885
         
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz: b78bc212d1b95a47e28c8337b19cd5b3ebb38072
         
     | 
| 
       5 
     | 
    
         
            -
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz: 28d686c6d459b9104b5c9279e98cc49b6119461bf6b19cf88b41c71b053465fc8c2bb8e66cc856571fc909206a6e4ea7946d2b0f090ae29c38ce50761635d5ba
         
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz: ec5038f060832c4f7ed5ad35243ba9ef43498a07eff2722ac2d65e2846c10460d2c5fe879e1750dc1e913d624ebfdb3ce43732345534a3f86b5ce22b1003f03c
         
     |