Sha256: 641d36fb6cfdd1575a103c2b508bb78c08f1ec2d8e3d72e5e679e4bdc79ec8f9

Contents?: true

Size: 1.54 KB

Versions: 8

Compression:

Stored size: 1.54 KB

Contents

module Braid
  module Commands
    class Add < Command
      def run(url, options = {})
        with_reset_on_error do
          mirror           = config.add_from_options(url, options)
          add_config_file

          mirror.branch = nil if options['revision']
          raise BraidError, 'Can not add mirror specifying both a revision and a tag' if options['revision'] && mirror.tag

          branch_message   = (mirror.branch.nil? || mirror.branch == 'master') ? '' : " branch '#{mirror.branch}'"
          tag_message      = mirror.tag.nil? ? '' : " tag '#{mirror.tag}'"
          revision_message = options['revision'] ? " at #{display_revision(mirror, options['revision'])}" : ''
          msg "Adding mirror of '#{mirror.url}'#{branch_message}#{tag_message}#{revision_message}."

          # these commands are explained in the subtree merge guide
          # http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html

          config.update(mirror)
          setup_remote(mirror)
          mirror.fetch

          new_revision = validate_new_revision(mirror, options['revision'])
          target_item = mirror.upstream_item_for_revision(new_revision)

          git.add_item_to_index(target_item, mirror.path, true)

          mirror.revision = new_revision
          config.update(mirror)
          add_config_file

          git.commit("Add mirror '#{mirror.path}' at #{display_revision(mirror)}")
          msg "Added mirror at #{display_revision(mirror)}."

          clear_remote(mirror, options)
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
braid-1.1.7 lib/braid/commands/add.rb
braid-1.1.6 lib/braid/commands/add.rb
braid-1.1.5 lib/braid/commands/add.rb
braid-1.1.4 lib/braid/commands/add.rb
braid-1.1.3 lib/braid/commands/add.rb
braid-1.1.2 lib/braid/commands/add.rb
braid-1.1.1 lib/braid/commands/add.rb
braid-1.1.0 lib/braid/commands/add.rb