rakelib/workflow.rake
author Jan Vrany <jan.vrany@labware.com>
Thu, 04 Nov 2021 16:23:15 +0000
changeset 322 d31ea885c8fa
parent 311 71d918531d37
child 325 7d9550327b8d
permissions -rw-r--r--
Rakefiles: support interactive push in `rake workflow:push` When invoking `rake workflow:push` from an interactive terminal, for each repository ask user whether or not push changes.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
68
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
# This file contains various tasks usefull for Smalltalk/X jv-branch 
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
# development. Currently it only supports working with Mercurial repositories,
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
# Honestly, there's not much one can do with CVS, we're using it only for
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
# packages that have not been converted to Mercurial. 
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
namespace :'workflow' do
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
  # A helper function to :push-upstream and push-staging tasks
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
     8
  def hg_repositories
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
     9
    project.packages_and_application.each do |pkg|
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    10
      unless pkg.nested_package?
68
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
        repo = Rake::Stx::Configuration::Repository::find(pkg.repository)
241
481556cfa16d Rakefiles: fixed tasks `workflow:*` to work on SWING CI
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
    12
        if repo != nil and repo.type == :'hg' and (File.exists?(BUILD_DIR / pkg.directory / '.hg' / 'hgrc'))
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    13
          hg = HG::Repository.new(BUILD_DIR / pkg.directory)
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    14
          yield pkg, hg
68
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
        end
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
      end
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    17
    end
79
1058962ee3ef Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    18
  end
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    19
127
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    20
  def push(remote, user, pass, review_only, push_bookmark)
138
Patrik Svestka <patrik.svestka@gmail.com>
parents: 137 127
diff changeset
    21
    has_changes = false
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    22
    hg_repositories do |pkg, hg|
79
1058962ee3ef Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    23
      opts = {
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    24
          :user => user,
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    25
          :pass => pass,
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    26
      }
105
983a637074e6 CI: Revise pipelines, use "integration" pipeline by default
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
    27
      paths = hg.paths
116
2512c874e5e1 CI: Oops, fixed task `wofkflow:push-upstream` so it actually pushes commits
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
    28
      remote_used = remote
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    29
      if remote_used == 'upstream'
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    30
        remote_used = 'canonical' unless paths['upstream']
116
2512c874e5e1 CI: Oops, fixed task `wofkflow:push-upstream` so it actually pushes commits
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
    31
      elsif remote_used == 'staging'
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    32
        unless paths['staging']
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    33
          puts ''
105
983a637074e6 CI: Revise pipelines, use "integration" pipeline by default
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
    34
          puts "!! repository #{hg.path} has not staging repository defined - skipping !!"
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    35
          puts ''
105
983a637074e6 CI: Revise pipelines, use "integration" pipeline by default
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
    36
          return
983a637074e6 CI: Revise pipelines, use "integration" pipeline by default
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
    37
        end
983a637074e6 CI: Revise pipelines, use "integration" pipeline by default
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
    38
      end
108
054919e32ff0 Various fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 105
diff changeset
    39
054919e32ff0 Various fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 105
diff changeset
    40
      # STC and librun are special - never push them automatically
054919e32ff0 Various fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 105
diff changeset
    41
      # to upstream / canonical repo, must be done manually. This is 
054919e32ff0 Various fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 105
diff changeset
    42
      # mainly beacuse there are on separate protected repositories 
054919e32ff0 Various fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 105
diff changeset
    43
      # not accessible without a special setup. Sigh...
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    44
      if ((pkg.name == 'stx:stc') or (pkg.name == 'stx:librun')) and ((remote_used == 'upstream') or (remote_used == 'canonical'))
138
Patrik Svestka <patrik.svestka@gmail.com>
parents: 137 127
diff changeset
    45
        if !review_only
Patrik Svestka <patrik.svestka@gmail.com>
parents: 137 127
diff changeset
    46
          puts ''
127
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    47
          puts "== Skipping push of #{pkg.name} - you must push manually =="
138
Patrik Svestka <patrik.svestka@gmail.com>
parents: 137 127
diff changeset
    48
          puts''
127
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    49
        end
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    50
      else
322
d31ea885c8fa Rakefiles: support interactive push in `rake workflow:push`
Jan Vrany <jan.vrany@labware.com>
parents: 311
diff changeset
    51
        has_changes_in_this_repo = false
d31ea885c8fa Rakefiles: support interactive push in `rake workflow:push`
Jan Vrany <jan.vrany@labware.com>
parents: 311
diff changeset
    52
        if review_only or STDIN.tty?
116
2512c874e5e1 CI: Oops, fixed task `wofkflow:push-upstream` so it actually pushes commits
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
    53
          opts[:rev] = '.'
2512c874e5e1 CI: Oops, fixed task `wofkflow:push-upstream` so it actually pushes commits
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
    54
          remote_url = hg.paths[remote_used] || remote_used
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    55
          bookmark = hg.bookmark
127
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    56
          hg.outgoing(remote_used, **opts) do | status, stdout |
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    57
            case status.exitstatus
322
d31ea885c8fa Rakefiles: support interactive push in `rake workflow:push`
Jan Vrany <jan.vrany@labware.com>
parents: 311
diff changeset
    58
            when 0
138
Patrik Svestka <patrik.svestka@gmail.com>
parents: 137 127
diff changeset
    59
              puts ''
Patrik Svestka <patrik.svestka@gmail.com>
parents: 137 127
diff changeset
    60
              puts "== changes going to #{remote_url} =="
127
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    61
              STDOUT.print stdout
138
Patrik Svestka <patrik.svestka@gmail.com>
parents: 137 127
diff changeset
    62
              puts "Will update bookmark '#{bookmark}" if push_bookmark and bookmark
Patrik Svestka <patrik.svestka@gmail.com>
parents: 137 127
diff changeset
    63
              puts '===================================='
127
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    64
              has_changes = true
322
d31ea885c8fa Rakefiles: support interactive push in `rake workflow:push`
Jan Vrany <jan.vrany@labware.com>
parents: 311
diff changeset
    65
              has_changes_in_this_repo = true
127
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    66
            when 1
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    67
              # nothing
322
d31ea885c8fa Rakefiles: support interactive push in `rake workflow:push`
Jan Vrany <jan.vrany@labware.com>
parents: 311
diff changeset
    68
            else
127
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    69
              raise Exception.new("Failed to do 'outgoing' from #{remote} (exit code #{status.exitstatus})")
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    70
            end
116
2512c874e5e1 CI: Oops, fixed task `wofkflow:push-upstream` so it actually pushes commits
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
    71
          end
322
d31ea885c8fa Rakefiles: support interactive push in `rake workflow:push`
Jan Vrany <jan.vrany@labware.com>
parents: 311
diff changeset
    72
        end
d31ea885c8fa Rakefiles: support interactive push in `rake workflow:push`
Jan Vrany <jan.vrany@labware.com>
parents: 311
diff changeset
    73
        if not review_only
d31ea885c8fa Rakefiles: support interactive push in `rake workflow:push`
Jan Vrany <jan.vrany@labware.com>
parents: 311
diff changeset
    74
          if not STDIN.tty? or (has_changes_in_this_repo and yesNO("Push to #{remote_url}")) then
d31ea885c8fa Rakefiles: support interactive push in `rake workflow:push`
Jan Vrany <jan.vrany@labware.com>
parents: 311
diff changeset
    75
            (push_bookmark && bookmark) ? (opts[:bookmarks] = ['.']) : (opts[:rev] = '.') # bookmark can be uninitialized
d31ea885c8fa Rakefiles: support interactive push in `rake workflow:push`
Jan Vrany <jan.vrany@labware.com>
parents: 311
diff changeset
    76
            hg.push(remote_used, **opts)
d31ea885c8fa Rakefiles: support interactive push in `rake workflow:push`
Jan Vrany <jan.vrany@labware.com>
parents: 311
diff changeset
    77
            has_changes = true
d31ea885c8fa Rakefiles: support interactive push in `rake workflow:push`
Jan Vrany <jan.vrany@labware.com>
parents: 311
diff changeset
    78
          end
79
1058962ee3ef Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    79
        end
1058962ee3ef Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    80
      end
68
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    end
138
Patrik Svestka <patrik.svestka@gmail.com>
parents: 137 127
diff changeset
    82
    has_changes
68
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
  end
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    85
  desc 'Display changes to be pushed to upstream repositores (use it to review what workflow:push-upstream would do)'
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    86
  task :'out-upstream', :user, :pass do |t, args|
127
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    87
    RakeFileUtils.verbose(false) do
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    88
      has_changes = push('upstream', args[:user], args[:pass], true, false)
138
Patrik Svestka <patrik.svestka@gmail.com>
parents: 137 127
diff changeset
    89
      puts 'No changes to be pushed to upstream repositories' unless has_changes
127
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    90
      exit(has_changes ? 0 : 1 )
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
    91
    end
79
1058962ee3ef Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    92
  end
1058962ee3ef Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    93
  task :'out-upstream' => :'setup'
1058962ee3ef Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    94
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    95
  desc 'Push currently checked out revisions to upstream repositories (to be called after all tests pass on all configurations)'
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
    96
  task :'push-upstream', :user, :pass do |t, args|
88
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
    97
    push('upstream', args[:user], args[:pass], false, false)
68
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
  end
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
  task :'push-upstream' => :'setup'
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
79
1058962ee3ef Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   101
311
71d918531d37 Rakefiles: fix 'rake out` and `rake push` tasks
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   102
  desc 'Display changes to be pushed (use it to review what workflow:push would do)'
71d918531d37 Rakefiles: fix 'rake out` and `rake push` tasks
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   103
  task :'out', :user, :pass do |t, args|
127
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
   104
    RakeFileUtils.verbose(false) do
311
71d918531d37 Rakefiles: fix 'rake out` and `rake push` tasks
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   105
      has_changes = push('default', args[:user], args[:pass], true, true)
138
Patrik Svestka <patrik.svestka@gmail.com>
parents: 137 127
diff changeset
   106
      puts 'No changes to be pushed to staging repositories' unless has_changes
127
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
   107
      exit(has_changes ? 0 : 1 )
664296ccdb4a Improved tasks `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 116
diff changeset
   108
    end
79
1058962ee3ef Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   109
  end
1058962ee3ef Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   110
  task :'out-staging' => :'setup'
1058962ee3ef Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   111
311
71d918531d37 Rakefiles: fix 'rake out` and `rake push` tasks
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   112
  desc 'Push currently checked out revisions (to be used by developer to test her changes)'
71d918531d37 Rakefiles: fix 'rake out` and `rake push` tasks
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   113
  task :'push', :user, :pass do |t, args|
71d918531d37 Rakefiles: fix 'rake out` and `rake push` tasks
Jan Vrany <jan.vrany@labware.com>
parents: 241
diff changeset
   114
    push('default', args[:user], args[:pass], false, true)
68
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
  end
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
  task :'push-staging' => :'setup'
79
1058962ee3ef Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   117
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
   118
  desc '(Auto)merge changes (from eXept)'
86
f2a7a4378c22 Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   119
  task :'merge' => :'setup' do
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
   120
    unless which("hg-automerge.rb")
86
f2a7a4378c22 Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   121
      info "Cannot find 'hg-automerge.rb' in PATH"
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
   122
      info 'You may find it at https://bitbucket.org/janvrany/jv-scripts'
86
f2a7a4378c22 Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   123
      error "Cannot find 'hg-automerge.rb' in PATH"
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
   124
    end
86
f2a7a4378c22 Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   125
    hg_repositories_failed_to_merge = []
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
   126
    hg_repositories do |pkg, hg|
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
   127
      if File.exist? (hg.path / '.hgautomerge')
86
f2a7a4378c22 Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   128
        info "Merging #{hg.path}"
f2a7a4378c22 Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   129
        sh "hg-automerge.rb --cwd #{hg.path}"
137
e665031cade7 Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents: 116
diff changeset
   130
      else
86
f2a7a4378c22 Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   131
        info "Not merging #{hg.path} - no merge config found."
f2a7a4378c22 Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   132
        info "To configure run: 'hg-automerge.rb --cwd #{hg.path} --config'"
f2a7a4378c22 Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   133
      end
f2a7a4378c22 Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   134
    end
f2a7a4378c22 Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   135
  end
79
1058962ee3ef Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   136
68
61d8bee7c4d4 Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
end