Sha256: 297004250930729b4334e14d57c8f2fd19aa760dfa88740b9f627b98f63fe9d1

Contents?: true

Size: 1.22 KB

Versions: 15

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

module OhlohScm
  module Hg
    class Scm < OhlohScm::Scm
      def pull(remote_scm, callback)
        err_msg = "Cannot pull remote_scm #{remote_scm.inspect}"
        raise ArgumentError, err_msg unless remote_scm.is_a?(Hg::Scm)

        clone_or_fetch(remote_scm, callback)
      end

      def branch_name_or_default
        branch_name || :default
      end

      def vcs_path
        "#{url}/.hg"
      end

      private

      def clone_or_fetch(remote_scm, callback)
        callback.update(0, 1)

        status.exist? ? revert_and_pull(remote_scm) : clone_repository(remote_scm)

        clean_up_disk

        callback.update(1, 1)
      end

      def clone_repository(remote_scm)
        run "rm -rf '#{url}'"
        run "hg clone '#{remote_scm.url}' '#{url}'"
      end

      def revert_and_pull(remote_scm)
        branch_opts = "-r #{remote_scm.branch_name}" if branch_name
        run "cd '#{url}' && hg revert --all && hg pull #{branch_opts} -u -y '#{remote_scm.url}'"
      end

      def clean_up_disk
        return unless FileTest.exist?(url)

        run "cd #{url} && find . -maxdepth 1 -not -name .hg -not -name . -print0"\
              ' | xargs -0 rm -rf --'
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
ohloh_scm-3.0.15 lib/ohloh_scm/hg/scm.rb
ohloh_scm-3.0.14 lib/ohloh_scm/hg/scm.rb
ohloh_scm-3.0.13 lib/ohloh_scm/hg/scm.rb
ohloh_scm-3.0.12 lib/ohloh_scm/hg/scm.rb
ohloh_scm-3.0.11 lib/ohloh_scm/hg/scm.rb
ohloh_scm-3.0.10 lib/ohloh_scm/hg/scm.rb
ohloh_scm-3.0.9 lib/ohloh_scm/hg/scm.rb
ohloh_scm-3.0.8 lib/ohloh_scm/hg/scm.rb
ohloh_scm-3.0.7 lib/ohloh_scm/hg/scm.rb
ohloh_scm-3.0.6 lib/ohloh_scm/hg/scm.rb
ohloh_scm-3.0.5 lib/ohloh_scm/hg/scm.rb
ohloh_scm-3.0.4 lib/ohloh_scm/hg/scm.rb
ohloh_scm-3.0.3 lib/ohloh_scm/hg/scm.rb
ohloh_scm-3.0.2 lib/ohloh_scm/hg/scm.rb
ohloh_scm-3.0.1 lib/ohloh_scm/hg/scm.rb