falkorlib 0.2.9 → 0.2.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/Gemfile.lock +1 -1
- data/README.md +285 -23
- data/lib/falkorlib/git/base.rb +12 -1
- data/lib/falkorlib/git/flow.rb +17 -1
- data/lib/falkorlib/git_tasks.rb +2 -6
- data/lib/falkorlib/tasks.rb +20 -2
- data/lib/falkorlib/tasks/git.rake +35 -31
- data/lib/falkorlib/tasks/git.rb +2 -6
- data/lib/falkorlib/tasks/gitflow.rake +8 -1
- data/lib/falkorlib/version.rb +1 -1
- data/spec/falkorlib/git_spec.rb +21 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23d6954ed4b909ec9d0d4910e1090e5550055622
|
4
|
+
data.tar.gz: 31936f89157d0c8a7227c286d97c6b34c73fad06
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 518bfa6f7db45c4e6e365d718674d0f3c3449ded82464b95154150656bfbdb04f27b5bcca3be593cc2d0c0b39ea431de0f751fb0c688bc2cb013ff3fafe8b8f1
|
7
|
+
data.tar.gz: 95a6b1f26a6963df8184b84cebf315836d162a3b0210c816fd0a7bcbe3d1c0e966571fa52305e977aadc3c1ab0d69c592cc295a0dffc65dd75e22a160fc615cb
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
# 0.2.10 / Bootstrapping scipts
|
2
|
+
|
3
|
+
* Enhanced setup tasks
|
4
|
+
|
5
|
+
# 0.2.9 / First stable version
|
6
|
+
|
7
|
+
* Management of git[flow] operations
|
8
|
+
* Management of versioning operations
|
9
|
+
* Flexible configuration scheme
|
10
|
+
|
11
|
+
|
1
12
|
# 0.1.0 / FIX ME
|
2
13
|
|
3
14
|
* Enhancements
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -4,8 +4,7 @@
|
|
4
4
|
[![Build Status](https://travis-ci.org/Falkor/falkorlib.png)](https://travis-ci.org/Falkor/falkorlib)
|
5
5
|
[![Code Climate](https://codeclimate.com/github/Falkor/falkorlib.png)](https://codeclimate.com/github/Falkor/falkorlib)
|
6
6
|
[![Inline docs ](http://inch-ci.org/github/Falkor/falkorlib.svg)](http://inch-ci.org/github/Falkor/falkorlib)
|
7
|
-
[![Gittip
|
8
|
-
](http://img.shields.io/gittip/Falkor.svg)](http://gittip.com/Falkor)
|
7
|
+
[![Gittip](http://img.shields.io/gittip/Falkor.svg)](http://gittip.com/Falkor)
|
9
8
|
|
10
9
|
_____ _ _ _ _ _
|
11
10
|
| ___|_ _| | | _____ _ __| | (_) |__
|
@@ -38,15 +37,19 @@ Or install it yourself as:
|
|
38
37
|
|
39
38
|
$> gem install falkorlib
|
40
39
|
|
41
|
-
**Note** you probably wants to do the above within an isolated environment. See
|
40
|
+
**Note** you probably wants to do the above within an isolated environment. See
|
41
|
+
below for some explanation on this setup.
|
42
42
|
|
43
43
|
## Usage
|
44
44
|
|
45
|
-
This library features two
|
45
|
+
This library features two aspects
|
46
46
|
|
47
|
-
* A set of toolbox functions / components I'm using everywhere in my Ruby
|
48
|
-
|
49
|
-
|
47
|
+
* A set of toolbox functions / components I'm using everywhere in my Ruby
|
48
|
+
developments, more specifically a set of modules:
|
49
|
+
* `FalkorLib::Common`: Recipe for all my toolbox and versatile Ruby functions
|
50
|
+
I'm using everywhere.
|
51
|
+
You'll typically want to include the `FalkorLib::Common` module to bring the
|
52
|
+
corresponding definitions into your scope. Example:
|
50
53
|
|
51
54
|
require 'falkorlib'
|
52
55
|
include FalkorLib::Common
|
@@ -67,20 +70,22 @@ This library features two aspect
|
|
67
70
|
end
|
68
71
|
|
69
72
|
|
70
|
-
* `FalkorLib::Git`: all git operations
|
71
|
-
* `FalkorLib::
|
73
|
+
* `FalkorLib::Git`: all [git](http://git-scm.com/) operations
|
74
|
+
* `FalkorLib::GitFlow`: all [git-flow](http://nvie.com/posts/a-successful-git-branching-model/) operations
|
75
|
+
* `FalkorLib::Version`: for the [semantic versioning](http://semver.org/)
|
76
|
+
management of your project.
|
72
77
|
|
73
78
|
* Some [rake](https://github.com/jimweirich/rake) tasks to facilitate common operations.
|
74
79
|
In general you can simply embedded my tasks by adding the following header in your `Rakefile`:
|
75
80
|
|
76
81
|
# In Rakefile
|
77
|
-
|
82
|
+
require "falkorlib"
|
83
|
+
|
84
|
+
## Place-holder to customize the configuration of the <object> tasks,
|
85
|
+
## Typically by altering FalkorLib.config.<object>
|
86
|
+
|
87
|
+
require "falkorlib/tasks/<object>" # OR require "falkorlib/<object>_tasks"
|
78
88
|
|
79
|
-
or
|
80
|
-
|
81
|
-
#In Rakefile
|
82
|
-
require "falkorlib/tasks/<object>"
|
83
|
-
|
84
89
|
### `FalkorLib` Ruby Modules / Classes Documentation
|
85
90
|
|
86
91
|
[Online documentation](https://rubygems.org/gems/falkorlib) is a available.
|
@@ -94,12 +99,15 @@ Statistics on the documentation generation (in particular *non*-documented compo
|
|
94
99
|
|
95
100
|
$> rake yard:stats
|
96
101
|
|
97
|
-
|
98
102
|
### Overview of the implemented Rake tasks
|
99
103
|
|
100
|
-
You can find the list of implemented Rake tasks (detailed below) in the
|
104
|
+
You can find the list of implemented Rake tasks (detailed below) in the
|
105
|
+
`lib/falkorlib/*_tasks.rb` files
|
101
106
|
|
102
|
-
|
107
|
+
As mentioned above, for a given task object `<obj>` (*git* tasks for instance as
|
108
|
+
proposed in `lib/falkorlib/git_tasks.rb`), you can specialize the corresponding
|
109
|
+
configuration by using the block construction of `FalkorLib.config do |c|
|
110
|
+
... end` **before** requiring the task file:
|
103
111
|
|
104
112
|
# In Rakefile
|
105
113
|
require 'falkorlib'
|
@@ -114,10 +122,253 @@ For a given task object `<obj>` (*git* tasks for instance as proposed in `lib/fa
|
|
114
122
|
|
115
123
|
## Proposed Rake tasks
|
116
124
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
125
|
+
FalkorLib is meant to facilitate many common operations performed within your
|
126
|
+
projects and piloted via a
|
127
|
+
[Rakefile](https://github.com/jimweirich/rake/blob/master/doc/rakefile.rdoc).
|
128
|
+
|
129
|
+
### Bootstrapping the project
|
130
|
+
|
131
|
+
Within your fresh new directory that will hold your project data
|
132
|
+
(`/path/to/myproject` for instance), you'll need to bootstrap the following
|
133
|
+
files:
|
134
|
+
|
135
|
+
* `.ruby-{version,gemset}`: [RVM](https://rvm.io/) configuration, use the name of the
|
136
|
+
project as [gemset](https://rvm.io/gemsets) name
|
137
|
+
* `Gemfile`: used by `[bundle](http://bundler.io/)`, initialized with `bundle
|
138
|
+
init` that contain _at least_ the line `gem 'falkorlib'`
|
139
|
+
* `Gemfile.lock` will be automatically generated once you run `bundle` to
|
140
|
+
install the configured gems within your `Gemfile`.
|
141
|
+
* `Rakefile`: the placeholder for your project tasks.
|
142
|
+
|
143
|
+
__Assuming you are in your project directory `/path/to/myproject`__ and that RVM
|
144
|
+
is installed on your system, you can bootstrap the above file by copy/pasting
|
145
|
+
all the following command-lines in your terminal:
|
146
|
+
|
147
|
+
```
|
148
|
+
bash <(curl --silent https://raw.githubusercontent.com/Falkor/falkorlib/devel/binscripts/bootstrap.sh)
|
149
|
+
```
|
150
|
+
_Note_: you probably want to
|
151
|
+
[take a look at that script content](https://github.com/Falkor/falkorlib/blob/devel/binscripts/bootstrap.sh)
|
152
|
+
before running the above command.
|
153
|
+
|
154
|
+
You can now complete your `Rakefile` depending on the tasks you wish to see.
|
155
|
+
Below is a detailed overview of the implemented rake tasks in `FalkorLib`.
|
156
|
+
|
157
|
+
### Git[Flow] and Versioning Management
|
158
|
+
|
159
|
+
Nearly all my projects are organized under [Git](http://git-scm.com/) using the
|
160
|
+
[gitflow](http://nvie.com/posts/a-successful-git-branching-model/) branching
|
161
|
+
model.
|
162
|
+
Thus I create a flexible framework to pilot the interaction with Git, git-flow,
|
163
|
+
git submodules, git subtrees etc.
|
164
|
+
|
165
|
+
Typical [Minimal] setup of your Rakefile, hopefully self-speaking
|
166
|
+
|
167
|
+
```
|
168
|
+
require 'falkorlib'
|
169
|
+
|
170
|
+
## placeholder for custom configuration of FalkorLib.config.git and
|
171
|
+
## FalkorLib.config.gitflow
|
172
|
+
|
173
|
+
# Git[Flow] and Versioning management
|
174
|
+
require "falkorlib/tasks/git" # OR require "falkorlib/git_tasks"
|
175
|
+
```
|
176
|
+
|
177
|
+
If git is not yet configured in your repository, you'll end with the following
|
178
|
+
tasks:
|
179
|
+
|
180
|
+
```
|
181
|
+
$> rake -T
|
182
|
+
fatal: Not a git repository (or any of the parent directories): .git
|
183
|
+
/!\ WARNING: Git is not initialized for this directory.
|
184
|
+
/!\ WARNING: ==> consider running 'rake git[:flow]:init' to be able to access the regular git Rake tasks
|
185
|
+
rake falkorlib:conf # Print the current configuration of FalkorLib
|
186
|
+
rake git:flow:init # Initialize Git-flow repository
|
187
|
+
rake git:init # Initialize Git repository
|
188
|
+
```
|
189
|
+
|
190
|
+
### Git-flow configuration
|
191
|
+
|
192
|
+
Configuration aspects for git-flow are stored in the
|
193
|
+
`FalkorLib::Config::GitFlow` module (defined in `lib/falkorlib/git/flow.rb`).
|
194
|
+
|
195
|
+
* __[Default Configuration for Gitflow](http://rubydoc.info/gems/falkorlib/FalkorLib/Config/GitFlow)__
|
196
|
+
|
197
|
+
You can easily customize these default settings in your Rakefile, __before__ the
|
198
|
+
`require "falkorlib/tasks/git"` lines. Just proceed with ruby magic as follows:
|
199
|
+
|
200
|
+
```
|
201
|
+
require 'falkorlib'
|
202
|
+
[...]
|
203
|
+
# Git flow customization
|
204
|
+
FalkorLib.config.gitflow do |c|
|
205
|
+
c[:branches] = {
|
206
|
+
:master => 'production',
|
207
|
+
:develop => 'devel'
|
208
|
+
}
|
209
|
+
end
|
210
|
+
[...]
|
211
|
+
require "falkorlib/tasks/git"
|
212
|
+
```
|
213
|
+
|
214
|
+
Now you can run `rake git:flow:init` to bootstrap your repository with git-flow.
|
215
|
+
|
216
|
+
Running `rake -T` shall now raises many new tasks linked to git-flow operations:
|
217
|
+
|
218
|
+
```
|
219
|
+
$> rake -T
|
220
|
+
rake falkorlib:conf # Print the current configuration of FalkorLib
|
221
|
+
rake git:feature:finish # Finalize the feature operation
|
222
|
+
rake git:feature:start[name] # Start a new feature operation on the repository using the git-flow framework
|
223
|
+
rake git:fetch # Fetch the latest changes on remotes
|
224
|
+
rake git:flow:init # Initialize your local clone of the repository for the git-flow management
|
225
|
+
rake git:push # Push your modifications onto the remote branches
|
226
|
+
rake git:up # Update your local copy of the repository from GIT server
|
227
|
+
rake version:bump:major # Prepare the major release of the repository
|
228
|
+
rake version:bump:minor # Prepare the minor release of the repository
|
229
|
+
rake version:bump:patch # Prepare the patch release of the repository
|
230
|
+
rake version:info # Get versioning information
|
231
|
+
rake version:release # Finalize the release of a given bumped version
|
232
|
+
```
|
233
|
+
_Note_: assuming you configured `git-flow` without any `master`, you probably
|
234
|
+
want now to delete this default branch by running `git branch -d master`
|
235
|
+
|
236
|
+
So you can now:
|
237
|
+
|
238
|
+
* Start/finish features with `rake git:feature:{start,finish}`
|
239
|
+
* perform basic git operation with `rake git:{fetch,push,up}`
|
240
|
+
* initiate semantic versioning of the project (typically with a `VERSION` file
|
241
|
+
at the root of your project) with `rake version:bump:{patch,minor,patch}`.
|
242
|
+
Note that these tasks make use of the git flow `release` feature.
|
243
|
+
|
244
|
+
Concluding a release is performed by `rake version:release`
|
245
|
+
|
246
|
+
### Git submodules configuration
|
247
|
+
|
248
|
+
Configuration aspects for git are stored in the
|
249
|
+
`FalkorLib::Config::Git` module (defined in `lib/falkorlib/git/base.rb`).
|
250
|
+
|
251
|
+
* __[Default Configuration for Git](http://rubydoc.info/gems/falkorlib/FalkorLib/Config/Git)__
|
252
|
+
|
253
|
+
In particular, you can add as many
|
254
|
+
[Git submodules](http://git-scm.com/book/en/Git-Tools-Submodules) as you wish as
|
255
|
+
follows:
|
256
|
+
|
257
|
+
```
|
258
|
+
require 'falkorlib'
|
259
|
+
[...]
|
260
|
+
# Git customization
|
261
|
+
FalkorLib.config.git do |c|
|
262
|
+
c[:submodules] = {
|
263
|
+
'veewee' => {
|
264
|
+
:url => 'https://github.com/jedi4ever/veewee.git',
|
265
|
+
:branch => 'master' # not mandatory if 'master' actually
|
266
|
+
}
|
267
|
+
}
|
268
|
+
end
|
269
|
+
[...]
|
270
|
+
require "falkorlib/tasks/git"
|
271
|
+
```
|
272
|
+
|
273
|
+
You can now bootstrap the configured sub-module(s) by running `rake
|
274
|
+
git:submodules:init`.
|
275
|
+
In the above scenario, the Git sub-module `veewee` will be initiated in
|
276
|
+
`.submodules/veewee` -- you can change the root submodules directory by altering
|
277
|
+
`FalkorLib.config.git[:submodulesdir]` value (see [defaults](http://rubydoc.info/gems/falkorlib/FalkorLib/Config/Git)).
|
278
|
+
|
279
|
+
Now you will have new rake tasks available:
|
280
|
+
|
281
|
+
$> rake -T
|
282
|
+
[...]
|
283
|
+
rake git:submodules:init # Initialize the Git subtrees defined in FalkorLib.config.git.submodules
|
284
|
+
rake git:submodules:update # Update the git submodules from '/private/tmp/toto'
|
285
|
+
rake git:submodules:upgrade # Upgrade the git submodules to the latest HEAD commit -- USE WITH CAUTION
|
286
|
+
[...]
|
287
|
+
|
288
|
+
|
289
|
+
### Git subtree configuration
|
290
|
+
|
291
|
+
You can also add as many
|
292
|
+
[Git subtrees](http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/)
|
293
|
+
as you wish -- as follows:
|
294
|
+
|
295
|
+
```
|
296
|
+
require 'falkorlib'
|
297
|
+
[...]
|
298
|
+
# Git customization
|
299
|
+
FalkorLib.config.git do |c|
|
300
|
+
c[:subtrees] = {
|
301
|
+
'easybuild/easyblocks' => {
|
302
|
+
:url => 'https://github.com/ULHPC/easybuild-easyblocks.git',
|
303
|
+
:branch => 'develop'
|
304
|
+
},
|
305
|
+
'easybuild/easyconfigs' => {
|
306
|
+
:url => 'https://github.com/ULHPC/easybuild-easyconfigs.git',
|
307
|
+
:branch => 'uni.lu'
|
308
|
+
},
|
309
|
+
}
|
310
|
+
end
|
311
|
+
[...]
|
312
|
+
require "falkorlib/tasks/git"
|
313
|
+
```
|
314
|
+
|
315
|
+
You can now bootstrap the configured sub-tree(s) by running `rake
|
316
|
+
git:subtrees:init`.
|
317
|
+
In the above scenario, the Git sub-trees will be initiated in the
|
318
|
+
sub-directories `easybuild/easyblocks` and `easybuild/easyconfigs`.
|
319
|
+
|
320
|
+
Now you will have new rake tasks available:
|
321
|
+
|
322
|
+
```
|
323
|
+
[...]
|
324
|
+
rake git:subtrees:diff # Show difference between local subtree(s) and their remotes
|
325
|
+
rake git:subtrees:init # Initialize the Git subtrees defined in FalkorLib.config.git.subtrees
|
326
|
+
rake git:subtrees:up # Pull the latest changes from the remote to the local subtree(s)
|
327
|
+
[...]
|
328
|
+
```
|
329
|
+
|
330
|
+
### Gem Management
|
331
|
+
|
332
|
+
See `lib/falkorlib/tasks/gem.rake`: you just have to add the following line to
|
333
|
+
your Rakefile:
|
334
|
+
|
335
|
+
```
|
336
|
+
require "falkorlib/tasks/gem" # OR require "falkorlib/gem_tasks"
|
337
|
+
```
|
338
|
+
|
339
|
+
Also, you can adapt the versioning scheme to target a gem management by altering the
|
340
|
+
[default configurations](http://rubydoc.info/gems/falkorlib/FalkorLib/Config/Versioning)
|
341
|
+
|
342
|
+
```
|
343
|
+
require "falkorlib"
|
344
|
+
[...]
|
345
|
+
# Adapt the versioning aspects to target a gem
|
346
|
+
FalkorLib.config.versioning do |c|
|
347
|
+
c[:type] = 'gem'
|
348
|
+
c[:source]['gem'][:filename] = 'lib/mygem/version.rb', # the file to patch
|
349
|
+
end
|
350
|
+
[...]
|
351
|
+
require "falkorlib/tasks/git"
|
352
|
+
require "falkorlib/tasks/gem"
|
353
|
+
```
|
354
|
+
|
355
|
+
This will bring the following tasks:
|
356
|
+
|
357
|
+
```
|
358
|
+
$> rake -T
|
359
|
+
[...]
|
360
|
+
rake build # Builds all packages
|
361
|
+
rake clean # Remove any temporary products
|
362
|
+
rake clobber # Remove any generated file
|
363
|
+
rake gem:console # Spawns an Interactive Ruby Console
|
364
|
+
rake gem:info # Informations on the gem
|
365
|
+
rake gem:release # Release the gem
|
366
|
+
rake version:bump:major # Prepare the major release of the repository
|
367
|
+
rake version:bump:minor # Prepare the minor release of the repository
|
368
|
+
rake version:bump:patch # Prepare the patch release of the repository
|
369
|
+
rake version:info # Get versioning information
|
370
|
+
rake version:release # Finalize the release of a given bumped version
|
371
|
+
```
|
121
372
|
|
122
373
|
|
123
374
|
## Implementation details
|
@@ -135,7 +386,18 @@ the sequel.
|
|
135
386
|
|
136
387
|
If you use [RVM](http://beginrescueend.com/), you perhaps wants to create a
|
137
388
|
separate gemset so that we can create and install this gem in a clean
|
138
|
-
environment.
|
389
|
+
environment.
|
390
|
+
|
391
|
+
* create a file `.ruby-gemset` containing the name of the wished Gemset
|
392
|
+
(`falkorlib` for instance)
|
393
|
+
* create a file `.ruby-version` containing the wished version of Ruby (`2.1.0`
|
394
|
+
for instance - check on [Travis](https://travis-ci.org/Falkor/falkorlib) for
|
395
|
+
the supported version)
|
396
|
+
|
397
|
+
To load these files, you have to re-enter the directory where you cloned
|
398
|
+
`falkorlib` and placed the above files
|
399
|
+
|
400
|
+
To do that, proceed as follows:
|
139
401
|
|
140
402
|
$> rvm gemset create falkorlib
|
141
403
|
$> rvm gemset use falkorlib
|
data/lib/falkorlib/git/base.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
################################################################################
|
3
|
-
# Time-stamp: <
|
3
|
+
# Time-stamp: <Mer 2014-06-25 14:30 svarrette>
|
4
4
|
################################################################################
|
5
5
|
# Interface for the main Git operations
|
6
6
|
#
|
@@ -336,6 +336,17 @@ module FalkorLib #:nodoc:
|
|
336
336
|
exit_status
|
337
337
|
end
|
338
338
|
|
339
|
+
## Check if the subtrees have been initialized.
|
340
|
+
## Actually based on a naive check of sub-directory existence
|
341
|
+
def subtree_init?(path = Dir.pwd)
|
342
|
+
res = true
|
343
|
+
FalkorLib.config.git[:subtrees].keys.each do |dir|
|
344
|
+
res = res && File.directory?(File.join(path, dir))
|
345
|
+
end
|
346
|
+
res
|
347
|
+
end # subtree_init?
|
348
|
+
|
349
|
+
|
339
350
|
## Show difference between local subtree(s) and their remotes"
|
340
351
|
def subtree_diff(path = Dir.pwd)
|
341
352
|
raise ArgumentError, "Git 'subtree' command is not available" unless FalkorLib::Git.command? "subtree"
|
data/lib/falkorlib/git/flow.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
################################################################################
|
3
|
-
# Time-stamp: <Jeu 2014-06-
|
3
|
+
# Time-stamp: <Jeu 2014-06-26 10:45 svarrette>
|
4
4
|
################################################################################
|
5
5
|
# Management of Git Flow operations
|
6
6
|
|
@@ -84,6 +84,22 @@ module FalkorLib
|
|
84
84
|
FalkorLib.config.gitflow[:prefix].each do |t,prefix|
|
85
85
|
exit_status = execute "git config gitflow.prefix.#{t} #{prefix}"
|
86
86
|
end
|
87
|
+
devel_branch = FalkorLib.config.gitflow[:branches][:develop]
|
88
|
+
info "Checkout to the main development branch '#{devel_branch}'"
|
89
|
+
exit_status = run %{
|
90
|
+
git checkout #{devel_branch}
|
91
|
+
}
|
92
|
+
if branches.include?('master') && ! FalkorLib.config.gitflow[:branches].values.include?( 'master' )
|
93
|
+
warn "Your git-flow confuguration does not hold the 'master' branch any more"
|
94
|
+
warn "You probably want to get rid of it asap by running 'git branch -d master'"
|
95
|
+
end
|
96
|
+
if devel_branch != 'master' &&
|
97
|
+
remotes.include?( 'origin' ) &&
|
98
|
+
branches.include?( 'remotes/origin/master')
|
99
|
+
warn "You might want to change the remote default branch to point to '#{devel_branch}"
|
100
|
+
puts "=> On github: Settings > Default Branch > #{devel_branch}"
|
101
|
+
puts "=> On the remote bare Git repository: 'git symbolic-ref HEAD refs/head/#{devel_branch}'"
|
102
|
+
end
|
87
103
|
end
|
88
104
|
exit_status
|
89
105
|
end
|
data/lib/falkorlib/git_tasks.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
################################################################################
|
3
|
-
# Time-stamp: <
|
3
|
+
# Time-stamp: <Jeu 2014-06-26 10:29 svarrette>
|
4
4
|
################################################################################
|
5
5
|
#
|
6
6
|
# FalkorLib rake tasks to pilot Git [flow] operations
|
@@ -42,15 +42,11 @@ else
|
|
42
42
|
#.....................
|
43
43
|
namespace :flow do
|
44
44
|
########### git:flow:init ###########
|
45
|
-
desc "Initialize Git-flow repository"
|
45
|
+
desc "Initialize the Git-flow repository"
|
46
46
|
task :init do
|
47
47
|
FalkorLib::GitFlow.init
|
48
48
|
end
|
49
49
|
end # namespace git:flow
|
50
50
|
|
51
|
-
|
52
|
-
|
53
51
|
end # namespace git
|
54
|
-
|
55
|
-
|
56
52
|
end
|
data/lib/falkorlib/tasks.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
################################################################################
|
3
|
-
# Time-stamp: <
|
3
|
+
# Time-stamp: <Mer 2014-06-25 15:38 svarrette>
|
4
4
|
################################################################################
|
5
5
|
#
|
6
6
|
# Default FalkorLib rake tasks
|
@@ -21,7 +21,25 @@ namespace :falkorlib do
|
|
21
21
|
task :conf do
|
22
22
|
puts FalkorLib.config.to_yaml
|
23
23
|
end
|
24
|
-
end # namespace falkorlib
|
24
|
+
end # namespace falkorlib
|
25
|
+
|
26
|
+
|
27
|
+
#.....................
|
28
|
+
namespace :bundle do
|
29
|
+
|
30
|
+
########### init ###########
|
31
|
+
desc "Initialize your Bundler configuration from your Gemfile"
|
32
|
+
task :init do |t|
|
33
|
+
info "#{t.comment}"
|
34
|
+
run %{ bundle }
|
35
|
+
end # task init
|
36
|
+
|
37
|
+
|
38
|
+
end # namespace bundle
|
39
|
+
|
40
|
+
########### setup ###########
|
41
|
+
desc "Setup the repository"
|
42
|
+
task :setup => [ 'bundle:init' ]
|
25
43
|
|
26
44
|
|
27
45
|
# Empty task debug
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
################################################################################
|
3
3
|
# git.rake - Special tasks for the management of Git operations
|
4
|
-
# Time-stamp: <Jeu 2014-06-
|
4
|
+
# Time-stamp: <Jeu 2014-06-26 10:33 svarrette>
|
5
5
|
#
|
6
6
|
# Copyright (c) 2014 Sebastien Varrette <Sebastien.Varrette@uni.lu>
|
7
7
|
# http://varrette.gforge.uni.lu
|
@@ -19,6 +19,7 @@ namespace :git do
|
|
19
19
|
remotes = FalkorLib::Git.remotes
|
20
20
|
#ap remotes
|
21
21
|
|
22
|
+
|
22
23
|
########### git:fetch ###########
|
23
24
|
desc "Fetch the latest changes on remotes"
|
24
25
|
task :fetch do |t|
|
@@ -32,7 +33,7 @@ namespace :git do
|
|
32
33
|
when 'up'; "Update your local copy of the repository from GIT server"
|
33
34
|
when 'push'; "Push your modifications onto the remote branches"
|
34
35
|
end
|
35
|
-
|
36
|
+
########### git:{up,push} ###########
|
36
37
|
desc "#{description}"
|
37
38
|
task op.to_sym do |t|
|
38
39
|
info t.comment
|
@@ -40,30 +41,30 @@ namespace :git do
|
|
40
41
|
warn "No git remote configured... Exiting #{t}"
|
41
42
|
next
|
42
43
|
end
|
43
|
-
cmd = ( op == 'up') ? 'pull' : op
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
cmd = ( op == 'up') ? 'pull' : op
|
45
|
+
branch = FalkorLib::Git.branch?
|
46
|
+
if FalkorLib::Git.list_branch.include? "remotes/origin/#{branch}"
|
47
|
+
status = run %{
|
47
48
|
git #{cmd} origin
|
48
49
|
}
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
end
|
50
|
+
if (status.to_i != 0)
|
51
|
+
warn("The command '#{cmd}' failed with exit status #{status.to_i}")
|
52
|
+
warn("This may be due to the fact that you're not connected to the internet")
|
53
|
+
really_continue?('no')
|
54
|
+
end
|
55
|
+
else
|
56
|
+
warn "The current branch '#{branch} is not currently tracked on the remote 'origin'."
|
57
|
+
warn "=> exiting"
|
58
|
+
next
|
59
|
+
end
|
60
|
+
end
|
60
61
|
end
|
61
62
|
|
62
63
|
unless FalkorLib.config.git[:submodules].empty?
|
63
64
|
#.....................
|
64
65
|
namespace :submodules do
|
65
66
|
########### init ###########
|
66
|
-
desc "Initialize the Git subtrees defined in FalkorLib.config.git
|
67
|
+
desc "Initialize the Git subtrees defined in FalkorLib.config.git[:submodules]"
|
67
68
|
task :init do |t|
|
68
69
|
info t.full_comment
|
69
70
|
FalkorLib::Git.submodule_init(git_root_dir)
|
@@ -97,25 +98,28 @@ namespace :git do
|
|
97
98
|
#.....................
|
98
99
|
namespace :subtrees do
|
99
100
|
########### git:subtrees:init ###########
|
100
|
-
desc "Initialize the Git subtrees defined in FalkorLib.config.git
|
101
|
+
desc "Initialize the Git subtrees defined in FalkorLib.config.git[:subtrees]"
|
101
102
|
task :init do
|
102
103
|
FalkorLib::Git.subtree_init(git_root_dir)
|
103
104
|
end # task git:subtree:init
|
104
105
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
106
|
+
if FalkorLib::Git.subtree_init?(git_root_dir)
|
107
|
+
########### git:subtrees:diff ###########
|
108
|
+
desc "Show difference between local subtree(s) and their remotes"
|
109
|
+
task :diff do
|
110
|
+
FalkorLib::Git.subtree_diff(git_root_dir)
|
111
|
+
end # task git:subtree:diff
|
112
|
+
|
113
|
+
########### git:subtrees:up ###########
|
114
|
+
desc "Pull the latest changes from the remote to the local subtree(s)"
|
115
|
+
task :up do
|
116
|
+
FalkorLib::Git.subtree_up(git_root_dir)
|
117
|
+
end # task git:subtree:diff
|
118
|
+
end
|
117
119
|
|
118
120
|
end # namespace git:subtrees
|
119
121
|
end
|
120
122
|
|
121
123
|
end # namespace git
|
124
|
+
|
125
|
+
task :setup => [ 'git:init' ]
|
data/lib/falkorlib/tasks/git.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
################################################################################
|
3
|
-
# Time-stamp: <
|
3
|
+
# Time-stamp: <Jeu 2014-06-26 10:29 svarrette>
|
4
4
|
################################################################################
|
5
5
|
#
|
6
6
|
# FalkorLib rake tasks to pilot Git [flow] operations
|
@@ -42,15 +42,11 @@ else
|
|
42
42
|
#.....................
|
43
43
|
namespace :flow do
|
44
44
|
########### git:flow:init ###########
|
45
|
-
desc "Initialize Git-flow repository"
|
45
|
+
desc "Initialize the Git-flow repository"
|
46
46
|
task :init do
|
47
47
|
FalkorLib::GitFlow.init
|
48
48
|
end
|
49
49
|
end # namespace git:flow
|
50
50
|
|
51
|
-
|
52
|
-
|
53
51
|
end # namespace git
|
54
|
-
|
55
|
-
|
56
52
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
################################################################################
|
2
2
|
# gitflow.rake - Special tasks for the management of Git [Flow] operations
|
3
|
-
# Time-stamp: <
|
3
|
+
# Time-stamp: <Jeu 2014-06-26 10:40 svarrette>
|
4
4
|
#
|
5
5
|
# Copyright (c) 2014 Sebastien Varrette <Sebastien.Varrette@uni.lu>
|
6
6
|
# http://varrette.gforge.uni.lu
|
@@ -16,12 +16,17 @@ namespace :git do
|
|
16
16
|
include FalkorLib::Common
|
17
17
|
git_root_dir = FalkorLib::Git.rootdir
|
18
18
|
|
19
|
+
########### git:init ###########
|
20
|
+
desc "Initialize Git repository"
|
21
|
+
task :init => [ 'git:flow:init' ]
|
22
|
+
|
19
23
|
#.....................
|
20
24
|
namespace :flow do
|
21
25
|
|
22
26
|
########### git:flow:init ###########
|
23
27
|
desc "Initialize your local clone of the repository for the git-flow management"
|
24
28
|
task :init do |t|
|
29
|
+
info t.comment
|
25
30
|
FalkorLib::GitFlow.init(git_root_dir)
|
26
31
|
end # task init
|
27
32
|
|
@@ -141,6 +146,8 @@ namespace :version do
|
|
141
146
|
git push origin
|
142
147
|
}
|
143
148
|
end
|
149
|
+
run %{ git push origin --tags }
|
150
|
+
#info "Update the changelog"
|
144
151
|
if (! FalkorLib.config[:versioning].nil?) &&
|
145
152
|
FalkorLib.config[:versioning][:type] == 'gem'
|
146
153
|
warn "About to push the released new gem (version #{version}) to the gem server (rybygems.org)"
|
data/lib/falkorlib/version.rb
CHANGED
data/spec/falkorlib/git_spec.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
#########################################
|
3
3
|
# git_spec.rb
|
4
4
|
# @author Sebastien Varrette <Sebastien.Varrette@uni.lu>
|
5
|
-
# Time-stamp: <
|
5
|
+
# Time-stamp: <Mer 2014-06-25 14:36 svarrette>
|
6
6
|
#
|
7
7
|
# @description Check the Git operations
|
8
8
|
#
|
@@ -150,19 +150,31 @@ describe FalkorLib::Git do
|
|
150
150
|
|
151
151
|
# ---------- Subtrees ---------------
|
152
152
|
if FalkorLib::Git.command? 'subtree'
|
153
|
+
FalkorLib.config.git do |c|
|
154
|
+
c[:subtrees] = {
|
155
|
+
'falkor/lib' => {
|
156
|
+
:url => 'https://github.com/Falkor/falkorlib.git',
|
157
|
+
:branch => 'devel'
|
158
|
+
},
|
159
|
+
}
|
160
|
+
end
|
161
|
+
|
162
|
+
it "#subtree_init? -- should check that the subtree(s) have not been initialized" do
|
163
|
+
b = FalkorLib::Git.subtree_init?( dir )
|
164
|
+
b.should be_false
|
165
|
+
end
|
166
|
+
|
153
167
|
it "#subtree_init - initialize some Git Subtrees" do
|
154
|
-
|
155
|
-
c[:subtrees] = {
|
156
|
-
'falkor/lib' => {
|
157
|
-
:url => 'https://github.com/Falkor/falkorlib.git',
|
158
|
-
:branch => 'devel'
|
159
|
-
},
|
160
|
-
}
|
161
|
-
end
|
168
|
+
|
162
169
|
b = FalkorLib::Git.subtree_init( dir )
|
163
170
|
b.should == 0
|
164
171
|
end
|
165
172
|
|
173
|
+
it "#subtree_init? -- should check that the subtree(s) have been initialized" do
|
174
|
+
b = FalkorLib::Git.subtree_init?( dir )
|
175
|
+
b.should be_true
|
176
|
+
end
|
177
|
+
|
166
178
|
it "#subtree_up" do
|
167
179
|
b = FalkorLib::Git.subtree_up( dir )
|
168
180
|
b.should == 0
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: falkorlib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sebastien Varrette
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|