build-tool 0.5.7 → 0.6.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/.rvmrc +1 -0
- data/.yardopts +1 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +56 -0
- data/History.txt +64 -0
- data/README.txt +0 -7
- data/Rakefile +8 -56
- data/bin/build-tool +4 -1
- data/build-tool.gemspec +62 -0
- data/db/migrations/20110703074000_add_command_logs.rb +17 -0
- data/db/migrations/20110703075000_add_module_logs.rb +20 -0
- data/db/migrations/20110815170000_add_features.rb +17 -0
- data/db/migrations/20120103204700_add_modules.rb +17 -0
- data/db/migrations/20120106181200_add_settings.rb +18 -0
- data/lib/build-tool.rb +3 -4
- data/lib/build-tool/application.rb +127 -37
- data/lib/build-tool/build-system/autoconf.rb +2 -8
- data/lib/build-tool/build-system/base.rb +12 -4
- data/lib/build-tool/build-system/cmake.rb +2 -0
- data/lib/build-tool/build-system/custom.rb +2 -0
- data/lib/build-tool/build-system/kdel10n.rb +2 -0
- data/lib/build-tool/build-system/make.rb +2 -0
- data/lib/build-tool/build-system/none.rb +2 -0
- data/lib/build-tool/build-system/qmake.rb +2 -0
- data/lib/build-tool/build-system/qt.rb +4 -0
- data/lib/build-tool/cfg/lexer.rex +40 -8
- data/lib/build-tool/cfg/lexer_base.rb +3 -1
- data/lib/build-tool/cfg/node.rb +17 -1
- data/lib/build-tool/cfg/parser.y +92 -10
- data/lib/build-tool/cfg/visitor.rb +202 -78
- data/lib/build-tool/command_actions.rb +26 -10
- data/lib/build-tool/commands.rb +289 -197
- data/lib/build-tool/commands/build.rb +13 -9
- data/lib/build-tool/commands/configuration.rb +25 -0
- data/lib/build-tool/commands/configuration/edit.rb +42 -0
- data/lib/build-tool/commands/configuration/list.rb +48 -0
- data/lib/build-tool/commands/configure.rb +9 -5
- data/lib/build-tool/commands/ctags.rb +8 -3
- data/lib/build-tool/commands/environments.rb +2 -4
- data/lib/build-tool/commands/environments/list.rb +13 -10
- data/lib/build-tool/commands/environments/set.rb +5 -1
- data/lib/build-tool/commands/features.rb +24 -0
- data/lib/build-tool/commands/features/disable.rb +70 -0
- data/lib/build-tool/commands/features/enable.rb +66 -0
- data/lib/build-tool/commands/features/list.rb +92 -0
- data/lib/build-tool/commands/fetch.rb +9 -3
- data/lib/build-tool/commands/files.rb +9 -5
- data/lib/build-tool/commands/gc.rb +48 -15
- data/lib/build-tool/commands/history.rb +21 -16
- data/lib/build-tool/commands/info.rb +16 -13
- data/lib/build-tool/commands/install.rb +8 -4
- data/lib/build-tool/commands/modules.rb +2 -4
- data/lib/build-tool/commands/modules/cleanup.rb +52 -0
- data/lib/build-tool/commands/modules/disable.rb +95 -0
- data/lib/build-tool/commands/modules/enable.rb +52 -0
- data/lib/build-tool/commands/modules/info.rb +44 -35
- data/lib/build-tool/commands/modules/list.rb +67 -15
- data/lib/build-tool/commands/modules/shell.rb +8 -2
- data/lib/build-tool/commands/rebase.rb +15 -7
- data/lib/build-tool/commands/recipes.rb +2 -4
- data/lib/build-tool/commands/recipes/add.rb +16 -2
- data/lib/build-tool/commands/recipes/edit.rb +72 -0
- data/lib/build-tool/commands/recipes/incoming.rb +11 -7
- data/lib/build-tool/commands/recipes/info.rb +12 -8
- data/lib/build-tool/commands/recipes/install.rb +37 -42
- data/lib/build-tool/commands/recipes/list.rb +6 -2
- data/lib/build-tool/configuration.rb +88 -3
- data/lib/build-tool/environment.rb +2 -0
- data/lib/build-tool/errors.rb +5 -0
- data/lib/build-tool/history.rb +3 -181
- data/lib/build-tool/model/command_log.rb +93 -0
- data/lib/build-tool/model/feature.rb +80 -0
- data/lib/build-tool/{module.rb → model/module.rb} +110 -29
- data/lib/build-tool/model/module_log.rb +64 -0
- data/lib/build-tool/model/setting.rb +84 -0
- data/lib/build-tool/recipe.rb +40 -18
- data/lib/build-tool/repository.rb +39 -33
- data/lib/build-tool/server.rb +27 -3
- data/lib/build-tool/singleton.rb +2 -0
- data/lib/build-tool/sshkey.rb +2 -0
- data/lib/build-tool/state_helper.rb +64 -0
- data/lib/build-tool/vcs/archive.rb +3 -1
- data/lib/build-tool/vcs/base.rb +13 -0
- data/lib/build-tool/vcs/git-svn.rb +36 -14
- data/lib/build-tool/vcs/git.rb +180 -44
- data/lib/build-tool/vcs/mercurial.rb +25 -13
- data/lib/build-tool/vcs/svn.rb +20 -15
- data/lib/build-tool/version.rb +30 -0
- data/lib/mj/error.rb +2 -0
- data/lib/mj/logging.rb +2 -0
- data/lib/mj/mixins/inherited_attributes.rb +73 -0
- data/lib/mj/tools/editor.rb +34 -0
- data/lib/mj/tools/ssh.rb +2 -0
- data/lib/mj/tools/subprocess.rb +2 -1
- data/lib/mj/vcs/git.rb +14 -2
- data/lib/mj/visitor.rb +22 -0
- data/tasks/db.rake +36 -0
- data/tasks/racc.rake +14 -0
- data/tasks/rdoc.rake +8 -0
- data/tasks/rexical.rake +14 -0
- data/tasks/test.rake +21 -0
- data/test/integration/history_test.rb +88 -0
- data/test/integration/parser_configuration.rb +36 -0
- data/test/integration/parser_environment_parser.rb +156 -0
- data/test/integration/parser_feature_test.rb +75 -0
- data/test/integration/parser_git-svn_test.rb +92 -0
- data/test/integration/parser_git_test.rb +97 -0
- data/test/integration/parser_mercurial_test.rb +77 -0
- data/test/integration/parser_module_test.rb +103 -0
- data/test/integration/parser_svn_test.rb +92 -0
- data/test/integration/parser_test.rb +73 -0
- data/test/test_helper.rb +61 -0
- data/test/unit/configuration_test.rb +36 -0
- data/test/unit/git_configuration_test.rb +163 -0
- data/test/unit/git_svn_configuration_test.rb +240 -0
- data/test/unit/mercurial_configuration_test.rb +64 -0
- data/test/unit/model/command_log_test.rb +103 -0
- data/test/unit/model/feature_test.rb +29 -0
- data/test/unit/model/module_log_test.rb +70 -0
- data/test/unit/model/module_test.rb +32 -0
- data/test/unit/repository_test.rb +110 -0
- data/test/unit/server_test.rb +66 -0
- data/test/unit/svn_configuration_test.rb +90 -0
- metadata +134 -93
- data/Manifest.txt +0 -80
- data/db/migrations/001_command_histories.rb +0 -20
- data/db/migrations/002_module_events.rb +0 -24
- data/db/migrations/003_command_histories_add_logfile.rb +0 -19
- data/lib/build-tool/GUI.rb +0 -360
- data/lib/build-tool/commands/help.rb +0 -22
- data/lib/build-tool/commands/lsfeatures.rb +0 -76
- data/lib/build-tool/feature.rb +0 -47
data/lib/build-tool/recipe.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
1
3
|
require 'yaml'
|
2
4
|
|
5
|
+
require 'build-tool/cfg/parser'
|
6
|
+
|
3
7
|
module BuildTool
|
4
8
|
|
5
9
|
#
|
@@ -9,15 +13,16 @@ class Recipe
|
|
9
13
|
|
10
14
|
attr_accessor :name
|
11
15
|
attr_accessor :global_path
|
12
|
-
attr_reader :settings
|
13
16
|
|
14
|
-
def initialize( name )
|
17
|
+
def initialize( name, find = true )
|
15
18
|
raise StandardError if name.nil?
|
16
19
|
@name = name
|
17
20
|
@metainfo_loaded = false
|
18
21
|
@short_description = "no description"
|
19
22
|
@long_description = "no description"
|
20
|
-
|
23
|
+
if find
|
24
|
+
@global_path = Recipe.find_recipe( @name )
|
25
|
+
end
|
21
26
|
end
|
22
27
|
|
23
28
|
def browse_repository
|
@@ -53,7 +58,7 @@ def long_description
|
|
53
58
|
|
54
59
|
def load_metainfo
|
55
60
|
begin
|
56
|
-
file = YAML.
|
61
|
+
file = YAML.load( File.open( metainfo_file_path, 'r:UTF-8' ) )
|
57
62
|
@long_description = file['LONG']
|
58
63
|
@short_description = file['SHORT']
|
59
64
|
@website = file['WEBSITE']
|
@@ -63,17 +68,14 @@ def load_metainfo
|
|
63
68
|
logger.verbose "No description file found for recipe #{name}."
|
64
69
|
@short_description = "No description file provided!"
|
65
70
|
rescue ArgumentError => e
|
66
|
-
logger.verbose "Invalid description file found for
|
71
|
+
logger.verbose "Invalid description file found for recipe #{name}."
|
67
72
|
@short_description = "Description File invalid!"
|
68
73
|
end
|
69
74
|
@metainfo_loaded = true
|
70
75
|
end
|
71
76
|
|
72
|
-
def load( local_config_name,
|
77
|
+
def load( local_config_name, configuration )
|
73
78
|
@local_config_name = local_config_name
|
74
|
-
raise StandardError, "Usage: recipe.load( settings )" if settings.nil?
|
75
|
-
@settings = settings
|
76
|
-
configuration = Configuration.new( self )
|
77
79
|
|
78
80
|
# Load the recipe
|
79
81
|
logger.debug "Loading #{global_config_file_path( "recipe" )}"
|
@@ -83,29 +85,49 @@ def load( local_config_name, settings )
|
|
83
85
|
local_config_file = local_config_file_path( "recipe" )
|
84
86
|
if local_config_file.exist?
|
85
87
|
logger.debug "Loading #{local_config_file}"
|
86
|
-
load_from_file( local_config_file, configuration )
|
88
|
+
load_from_file( local_config_file, configuration, false )
|
87
89
|
end
|
88
|
-
|
90
|
+
|
91
|
+
return configuration
|
89
92
|
end
|
90
93
|
|
91
|
-
def load_from_file( file, configuration )
|
94
|
+
def load_from_file( file, configuration, global=true )
|
92
95
|
# Get the file content
|
93
|
-
recipe = File.
|
96
|
+
recipe = File.open( file, 'r:UTF-8' ).read()
|
97
|
+
|
94
98
|
# Create the parser
|
95
|
-
parser = Cfg::Parser.new( configuration )
|
99
|
+
parser = Cfg::Parser.new( configuration, global )
|
96
100
|
# Create the ERB
|
97
101
|
erb = ERB.new( recipe, nil, "%<>" )
|
98
102
|
# Fill the env for ERB
|
103
|
+
settings = configuration.settings
|
99
104
|
b = binding
|
100
|
-
settings = @settings
|
101
105
|
# Call the parser with the ERBed file content and return the
|
102
106
|
# result
|
103
107
|
conf = parser.parse_string( erb.result(b), file )
|
104
108
|
end
|
105
109
|
|
106
|
-
def
|
107
|
-
|
108
|
-
|
110
|
+
def load_from_string( recipe, configuration, global=true )
|
111
|
+
# Create the parser
|
112
|
+
parser = Cfg::Parser.new( configuration, global )
|
113
|
+
# Create the ERB
|
114
|
+
erb = ERB.new( recipe, nil, "%<>" )
|
115
|
+
# Fill the env for ERB
|
116
|
+
settings = configuration.settings
|
117
|
+
b = binding
|
118
|
+
# Call the parser with the ERBed file content and return the
|
119
|
+
# result
|
120
|
+
conf = parser.parse_string( erb.result(b), '<string>' )
|
121
|
+
end
|
122
|
+
|
123
|
+
def local_path()
|
124
|
+
Pathname.new(
|
125
|
+
BuildTool::Application::instance.local_configuration_dir ).
|
126
|
+
join( @local_config_name )
|
127
|
+
end
|
128
|
+
|
129
|
+
def local_config_file_path( name )
|
130
|
+
local_path().join( name )
|
109
131
|
end
|
110
132
|
|
111
133
|
def global_config_file_path( name )
|
@@ -1,65 +1,71 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
3
|
+
require 'mj/mixins/inherited_attributes'
|
1
4
|
require 'build-tool/errors'
|
2
5
|
|
6
|
+
|
7
|
+
|
3
8
|
module BuildTool
|
4
9
|
|
5
10
|
# Encapsulates a source code repository.
|
6
11
|
class Repository
|
7
12
|
|
13
|
+
include MJ::Mixins::InheritedAttributes
|
14
|
+
|
8
15
|
# Repository name
|
9
16
|
attr_reader :name
|
10
17
|
|
11
|
-
# The server
|
12
|
-
|
18
|
+
# The server the repository is located on.
|
19
|
+
# @return [Server] the server.
|
20
|
+
# @macro [attach] inherited_attr_accessor
|
21
|
+
# @attribute [rw] $1
|
22
|
+
inherited_attr_accessor :server
|
13
23
|
|
14
|
-
# The
|
15
|
-
|
24
|
+
# The path on the server.
|
25
|
+
# @return [String] the path.
|
26
|
+
inherited_attr_accessor :path
|
16
27
|
|
17
|
-
# The
|
18
|
-
|
28
|
+
# The user required to connect to the repository.
|
29
|
+
# @return [String] the user name.
|
30
|
+
inherited_attr_accessor :user
|
19
31
|
|
20
|
-
#
|
32
|
+
# Return the ssh key needed to access this repository. If the repository has no key we
|
33
|
+
# check the associated server. After that the parent.
|
34
|
+
def sshkey
|
35
|
+
# 1. Our SSH-Key
|
36
|
+
return @sshkey if @sshkey
|
37
|
+
# 2. Our Servers SSH-Key
|
38
|
+
return server.sshkey if @server
|
39
|
+
# 3. Our Parents SSH-Key
|
40
|
+
return parent.sshkey if @parent
|
41
|
+
# 4. Nothing
|
42
|
+
return nil
|
43
|
+
end
|
21
44
|
attr_writer :sshkey
|
22
45
|
|
23
|
-
# Create a repository
|
46
|
+
# Create a repository object
|
47
|
+
# @param [String] name The unique name to use for this repository.
|
24
48
|
def initialize(name)
|
49
|
+
super
|
25
50
|
if name.nil?
|
26
51
|
raise StandardError, "The repository name has to be set"
|
27
52
|
end
|
28
53
|
@name = name
|
29
54
|
@server = nil
|
30
55
|
@sshkey = nil
|
56
|
+
@path = nil
|
57
|
+
@user = nil
|
31
58
|
end
|
32
59
|
|
33
|
-
#
|
34
|
-
#
|
35
|
-
|
36
|
-
return @sshkey if @sshkey
|
37
|
-
|
38
|
-
if !server
|
39
|
-
return nil
|
40
|
-
end
|
41
|
-
|
42
|
-
return server.sshkey
|
43
|
-
end
|
44
|
-
|
60
|
+
# Returns the url for this repository.
|
61
|
+
# @return [String] the url
|
62
|
+
# @raise [ConfigurationError] if no server is set configured.
|
45
63
|
def url
|
46
64
|
if !server
|
47
65
|
raise ConfigurationError, "No server specified for repository #{name}"
|
48
66
|
end
|
49
|
-
if !server.host
|
50
|
-
raise ConfigurationError, "No host specified for server #{server.name}"
|
51
|
-
end
|
52
67
|
|
53
|
-
url = server.
|
54
|
-
if server.path
|
55
|
-
url = "#{url}/#{server.path}"
|
56
|
-
end
|
57
|
-
if user
|
58
|
-
url = "#{user}@#{url}"
|
59
|
-
end
|
60
|
-
if server.protocol
|
61
|
-
url = "#{server.protocol}://#{url}"
|
62
|
-
end
|
68
|
+
url = server.url( user )
|
63
69
|
if path
|
64
70
|
url = "#{url}/#{path}"
|
65
71
|
end
|
data/lib/build-tool/server.rb
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
3
|
+
require 'uri'
|
4
|
+
|
1
5
|
module BuildTool
|
2
6
|
|
3
7
|
class Server
|
@@ -18,24 +22,44 @@ class Server
|
|
18
22
|
attr_accessor :sshkey
|
19
23
|
|
20
24
|
# Create a repository
|
21
|
-
def initialize(name)
|
25
|
+
def initialize( name, theurl = nil )
|
26
|
+
@host = nil
|
27
|
+
@name = nil
|
28
|
+
@path = nil
|
29
|
+
@protocol = nil
|
30
|
+
@sshkey = nil
|
22
31
|
if name.nil?
|
23
32
|
raise StandardError, "The server name has to be set"
|
24
33
|
end
|
25
34
|
@name = name
|
35
|
+
if theurl
|
36
|
+
uri = URI.parse( theurl )
|
37
|
+
@host = uri.host
|
38
|
+
@protocol = uri.scheme
|
39
|
+
if not uri.path.empty?
|
40
|
+
@path = uri.path
|
41
|
+
end
|
42
|
+
end
|
26
43
|
end
|
27
44
|
|
28
|
-
def url
|
45
|
+
def url( user = nil )
|
29
46
|
if !host
|
30
47
|
raise ConfigurationError, "No host specified for server #{name}"
|
31
48
|
end
|
32
49
|
|
33
50
|
url = host
|
51
|
+
if user
|
52
|
+
url = "#{user}@#{url}"
|
53
|
+
end
|
34
54
|
if protocol
|
35
55
|
url = "#{protocol}://#{url}"
|
36
56
|
end
|
37
57
|
if path
|
38
|
-
|
58
|
+
if path[0] == '/'
|
59
|
+
url = "#{url}#{path}"
|
60
|
+
else
|
61
|
+
url = "#{url}/#{path}"
|
62
|
+
end
|
39
63
|
end
|
40
64
|
url
|
41
65
|
end
|
data/lib/build-tool/singleton.rb
CHANGED
data/lib/build-tool/sshkey.rb
CHANGED
@@ -0,0 +1,64 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
3
|
+
require 'ansi'
|
4
|
+
|
5
|
+
module BuildTool
|
6
|
+
|
7
|
+
module StateHelper
|
8
|
+
|
9
|
+
# Needed for both Module and Command History
|
10
|
+
STARTED = 0
|
11
|
+
CANCELED_BY_USER = 1
|
12
|
+
FINISHED_SUCCESSFUL = 2
|
13
|
+
FINISHED_WITH_ERRORS = 3
|
14
|
+
|
15
|
+
def state_str
|
16
|
+
self.class.state_str( self.state )
|
17
|
+
end
|
18
|
+
|
19
|
+
def state_char
|
20
|
+
self.class.state_char( self.state )
|
21
|
+
end
|
22
|
+
|
23
|
+
module ClassMethods
|
24
|
+
|
25
|
+
def state_str( state )
|
26
|
+
case state
|
27
|
+
when STARTED
|
28
|
+
"STARTED"
|
29
|
+
when CANCELED_BY_USER
|
30
|
+
ANSI::Code.red { "CANCELED" }
|
31
|
+
when FINISHED_SUCCESSFUL
|
32
|
+
ANSI::Code.green { "SUCCESS" }
|
33
|
+
when FINISHED_WITH_ERRORS
|
34
|
+
ANSI::Code.red { "ERRORS" }
|
35
|
+
else
|
36
|
+
"#{state.to_s}?"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def state_char( state )
|
41
|
+
case state
|
42
|
+
when STARTED
|
43
|
+
"R"
|
44
|
+
when CANCELED_BY_USER
|
45
|
+
ANSI::Code.red { "C" }
|
46
|
+
when FINISHED_SUCCESSFUL
|
47
|
+
ANSI::Code.green { "S" }
|
48
|
+
when FINISHED_WITH_ERRORS
|
49
|
+
ANSI::Code.red { "E" }
|
50
|
+
else
|
51
|
+
"#{state.to_s}?"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.included( klass )
|
57
|
+
klass.extend ClassMethods
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
end # module BuildTool
|
64
|
+
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
1
3
|
require 'open-uri'
|
2
4
|
|
3
5
|
require 'build-tool/vcs/base'
|
@@ -159,7 +161,7 @@ def guess_top_level_directory
|
|
159
161
|
return topdir
|
160
162
|
end
|
161
163
|
|
162
|
-
def rebase
|
164
|
+
def rebase( verbose = false )
|
163
165
|
|
164
166
|
# Check if the archive is already downloaded
|
165
167
|
if !File.exist? archive_local_path
|
data/lib/build-tool/vcs/base.rb
CHANGED
@@ -1,13 +1,26 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
1
3
|
require 'mj/tools/subprocess.rb'
|
4
|
+
require 'mj/tools/ssh.rb'
|
2
5
|
|
3
6
|
require 'build-tool/errors'
|
4
7
|
|
5
8
|
module BuildTool; module VCS
|
6
9
|
|
10
|
+
# Base class for version control system configurations.
|
11
|
+
#
|
12
|
+
# @abstract
|
13
|
+
# @attr_reader [String] name returns the name of the vcs.
|
7
14
|
class BaseConfiguration
|
8
15
|
|
16
|
+
# The associated module of this configuration object.
|
9
17
|
attr_reader :module
|
10
18
|
|
19
|
+
# The name of the version control system
|
20
|
+
def name
|
21
|
+
raise StandardError, "#{self.class}: override name!"
|
22
|
+
end
|
23
|
+
|
11
24
|
def initialize
|
12
25
|
@module = nil
|
13
26
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
1
3
|
require 'build-tool/vcs/svn'
|
2
4
|
require 'build-tool/vcs/git'
|
3
5
|
|
@@ -15,6 +17,13 @@ def name
|
|
15
17
|
def initialize
|
16
18
|
super
|
17
19
|
@externals = {}
|
20
|
+
@repository = nil
|
21
|
+
@remote_path = nil
|
22
|
+
end
|
23
|
+
|
24
|
+
def merged_externals
|
25
|
+
return parent.merged_externals.merge( @externals ) if @parent # We have a parent. Merge with it
|
26
|
+
return @externals # No parent, no global. Just us
|
18
27
|
end
|
19
28
|
|
20
29
|
def vcs( mod )
|
@@ -34,22 +43,22 @@ def copy_configuration( other )
|
|
34
43
|
|
35
44
|
attr_writer :repository
|
36
45
|
def repository
|
37
|
-
if @repository
|
38
|
-
|
39
|
-
|
40
|
-
@repository
|
46
|
+
return @repository if @repository # Our repository
|
47
|
+
return parent.repository if @parent # Our parents repository
|
48
|
+
raise ConfigurationError, "No repository configured for module #{self.module ? self.module.name : 'unknown' }."
|
41
49
|
end
|
42
50
|
|
43
51
|
attr_writer :remote_path
|
44
52
|
def remote_path
|
45
|
-
if @remote_path
|
46
|
-
|
47
|
-
|
48
|
-
@remote_path
|
53
|
+
return @remote_path if @remote_path
|
54
|
+
return parent.remote_path if @parent
|
55
|
+
return @module.name
|
49
56
|
end
|
50
57
|
|
51
|
-
def
|
52
|
-
|
58
|
+
def track
|
59
|
+
return @track if @track # Our track
|
60
|
+
return parent.track if @parent # Out parents track
|
61
|
+
"remotes/git-svn"
|
53
62
|
end
|
54
63
|
end
|
55
64
|
|
@@ -111,6 +120,7 @@ def clone
|
|
111
120
|
if 0 != ( git_svn "init #{config.repository.url}/#{remote_path}" )
|
112
121
|
raise GitSvnError, "Error while initializing the repo `git svn init '#{config.repository}/#{remote_path}'`: #{$?}"
|
113
122
|
end
|
123
|
+
|
114
124
|
fetch( "HEAD" )
|
115
125
|
end
|
116
126
|
|
@@ -124,6 +134,9 @@ def configure
|
|
124
134
|
def fetch( revision = nil )
|
125
135
|
if !checkedout? and !$noop # Beware of looping
|
126
136
|
clone
|
137
|
+
else
|
138
|
+
# clone() calls those methods.
|
139
|
+
git.check_config
|
127
140
|
end
|
128
141
|
if revision
|
129
142
|
cmd = "fetch -r#{revision}"
|
@@ -157,9 +170,18 @@ def prepare_for_fetch
|
|
157
170
|
return check_for_sshkey( config.repository.sshkey )
|
158
171
|
end
|
159
172
|
|
160
|
-
def rebase
|
161
|
-
|
162
|
-
|
173
|
+
def rebase( verbose = false )
|
174
|
+
git.check_config
|
175
|
+
remote_branch = "#{config.track_branch}"
|
176
|
+
|
177
|
+
if verbose
|
178
|
+
git.git('log --first-parent HEAD..%s' % remote_branch ) do |line|
|
179
|
+
logger.info( line )
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
if 0 != ( git.git "rebase #{remote_branch}" )
|
184
|
+
raise GitSvnError, "Error while rebasing the repo with `#{remote_branch}': #{$?}"
|
163
185
|
end
|
164
186
|
end
|
165
187
|
|
@@ -179,7 +201,7 @@ def remote_path
|
|
179
201
|
end
|
180
202
|
|
181
203
|
def update_externals
|
182
|
-
config.
|
204
|
+
config.merged_externals.each do |local, remote|
|
183
205
|
VCS::Svn::svn( "checkout #{remote}@HEAD #{local}", wd = local_path )
|
184
206
|
end
|
185
207
|
end
|