specs/repositories.rbspec
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 02 Nov 2016 00:18:25 +0000
changeset 67 75b6eb7b781c
parent 62 de0e8016c2d5
child 88 112075e99cef
permissions -rw-r--r--
Added support for canonical, upstream and staging repositores. Each repository (forest) can now specify three repository URLS - (mandatory), "upstream: and "staging" repository (bothoptional). When a "staging" repository is configured, commits are first pulled from "staging" repository and then from "canonical" (assuming "staging" repository is local so this should avoid network trafic to canonical repositories). When an "upstream" repository is configured, changes are pulled from an "upstream" after pulling fron "staging" but before pulling from a canonical repository. This allows to define a hierarchy of repositories for staged development. This means, it allows for changes (commits) to go from one repository to another before eventually reaching a canonical repository from which official builds should be done. At each step commits should be verified and tested before they're pushed to upstream to avoid pushing broken code.

# This file defines a set of repositories to fetch source code from. 
#
#
# Following repository sets are defined here:
#
#  1.*default*: fetches source from public repositories. Code forked
#    by Smalltalk/X jv-branch is loaded from Jan Vrany's BitBucket
#    account (https://bitbucket.org/janvrany/), the rest is loaded
#    from eXept's public CVS repository (:pserver:cvs@cvs.smalltalk-x.de:/cvs/stx)
#    Sources of stc and librun (Smalltalk/X VM) are not checked out 
#    (since they're not freely available) but pre-build binaries are
#    downloaded from SWING CI server ( https://swing.fit.cvut.cz/jenkins/job/stx_jv/ )
#
#    This is the default if no REPOSITORYSET value is set. 
#
#
#  2.*ci-swing*: for use on SWING CI [1]. Uses local staging repositories hosted
#    on https://swing.fit.cvut.cz/hg in addition to canonical on hosted on 
#    BitBucket.
#
#  3."ci-jv": for use on Jan Vrany's private CI. Uses local staging repositories 
#    in addition to canonical on hosted on BitBucket.
#
REPOSITORYSET = (ENV['REPOSITORYSET'] || 'default') if not defined? REPOSITORYSET

case REPOSITORYSET 
when 'default'
  repository :'exept:public' do
    type :cvs    
    canonical ":pserver:cvs@cvs.smalltalk-x.de:/cvs/stx"
  end

  repository :'bitbucket:janvrany' do
    type :hg
    canonical "https://bitbucket.org/janvrany"
    separator '-'
  end

  if core_developer?
    repository :'swing:private:hg' do
      type :hg
      canonical "ssh://192.168.12.2//hg"
      separator '.'
    end
  end

when 'ci-swing'
  repository :'exept:public' do
    type :cvs    
    canonical ":ext:swing.fit.cvut.cz/var/local/cvs"
  end

  repository :'bitbucket:janvrany' do
    type :hg
    canonical "https://bitbucket.org/janvrany"
    staging "ssh://swing.fit.cvut.cz//var/local/hg"
    separator '-'
  end

  repository :'swing:private:hg' do
    type :hg
    canonical "ssh://192.168.12.2//hg"
    separator '.'
  end


when 'ci-jv'
  repository :'exept:public' do
    type :cvs    
    canonical ":pserver:cvs@cvs.smalltalk-x.de:/cvs/stx"
  end

  repository :'bitbucket:janvrany' do
    type :hg
    canonical "https://bitbucket.org/janvrany"
    staging "ssh://hg@192.168.0.250"
    separator '-'
  end

  repository :'swing:private:hg' do
    type :hg
    canonical "ssh://hg@192.168.0.250"
    separator '-'
  end
end