prick 0.18.0 → 0.20.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +10 -4
- data/README.md +7 -7
- data/Rakefile +3 -1
- data/TODO +13 -11
- data/bin/console +2 -1
- data/doc/build-yml.txt +14 -0
- data/exe/prick +264 -28
- data/lib/builder/batch.rb +147 -0
- data/lib/builder/builder.rb +122 -0
- data/lib/builder/node.rb +189 -0
- data/lib/builder/node_pool.rb +105 -0
- data/lib/builder/parser.rb +120 -0
- data/lib/local/command.rb +193 -0
- data/lib/{prick → local}/git.rb +148 -22
- data/lib/local/timer.rb +98 -0
- data/lib/prick/constants.rb +54 -66
- data/lib/prick/diff.rb +28 -18
- data/lib/prick/prick_version.rb +161 -0
- data/lib/prick/state.rb +80 -165
- data/lib/prick/version.rb +2 -163
- data/lib/prick.rb +43 -27
- data/lib/share/init/.gitignore +10 -0
- data/lib/share/init/.prick-context +2 -0
- data/lib/share/init/.rspec +3 -0
- data/{share/schema/schema/public → lib/share/init/migration}/.keep +0 -0
- data/lib/share/init/prick.yml +6 -0
- data/lib/share/init/schema/.keep +0 -0
- data/lib/share/init/schema/build.yml +2 -0
- data/lib/share/init/schema/prick/.keep +0 -0
- data/lib/share/init/schema/prick/build.yml +5 -0
- data/lib/share/init/schema/prick/data.sql +6 -0
- data/{share/schema → lib/share/init}/schema/prick/tables.sql +2 -3
- data/lib/share/init/schema/public/.keep +0 -0
- data/lib/share/init/spec/prick_helper.rb +1 -0
- data/lib/share/init/spec/prick_spec.rb +6 -0
- data/lib/share/init/spec/spec_helper.rb +50 -0
- data/lib/share/migrate/migration/build.yml +4 -0
- data/lib/share/migrate/migration/diff.after-tables.sql +0 -0
- data/lib/share/migrate/migration/diff.before-tables.sql +0 -0
- data/lib/share/migrate/migration/diff.tables.sql +0 -0
- data/lib/subcommand/prick-build.rb +55 -0
- data/lib/subcommand/prick-create.rb +78 -0
- data/lib/subcommand/prick-drop.rb +25 -0
- data/lib/subcommand/prick-fox.rb +62 -0
- data/lib/subcommand/prick-init.rb +46 -0
- data/lib/subcommand/prick-make.rb +202 -0
- data/lib/subcommand/prick-migrate.rb +37 -0
- data/lib/subcommand/prick-release.rb +23 -0
- data/lib/subcommand/prick-setup.rb +20 -0
- data/lib/subcommand/prick-teardown.rb +18 -0
- data/prick.gemspec +43 -16
- metadata +161 -72
- data/.gitignore +0 -29
- data/.travis.yml +0 -7
- data/doc/create_release.txt +0 -17
- data/doc/flow.txt +0 -98
- data/doc/migra +0 -1
- data/doc/migrations.txt +0 -172
- data/doc/notes.txt +0 -116
- data/doc/prick.txt +0 -114
- data/doc/sh.prick +0 -316
- data/lib/ext/algorithm.rb +0 -14
- data/lib/ext/fileutils.rb +0 -26
- data/lib/ext/forward_method.rb +0 -18
- data/lib/ext/pg.rb +0 -18
- data/lib/ext/shortest_path.rb +0 -44
- data/lib/prick/archive.rb +0 -124
- data/lib/prick/branch.rb +0 -254
- data/lib/prick/builder.rb +0 -205
- data/lib/prick/cache.rb +0 -34
- data/lib/prick/command.rb +0 -102
- data/lib/prick/database.rb +0 -82
- data/lib/prick/dsort.rb +0 -151
- data/lib/prick/ensure.rb +0 -119
- data/lib/prick/exceptions.rb +0 -25
- data/lib/prick/head.rb +0 -183
- data/lib/prick/migration.rb +0 -70
- data/lib/prick/program.rb +0 -506
- data/lib/prick/project.rb +0 -626
- data/lib/prick/rdbms.rb +0 -137
- data/lib/prick/schema.rb +0 -27
- data/lib/prick/share.rb +0 -64
- data/libexec/strip-comments +0 -33
- data/make_releases +0 -72
- data/make_schema +0 -10
- data/share/diff/diff.after-tables.sql +0 -4
- data/share/diff/diff.before-tables.sql +0 -4
- data/share/diff/diff.tables.sql +0 -8
- data/share/features/diff.sql +0 -2
- data/share/features/feature/diff.sql +0 -2
- data/share/features/feature/migrate.sql +0 -2
- data/share/features/features.sql +0 -2
- data/share/features/features.yml +0 -2
- data/share/features/migrations.sql +0 -4
- data/share/gitignore +0 -2
- data/share/migration/diff.tables.sql +0 -8
- data/share/migration/features.yml +0 -6
- data/share/migration/migrate.sql +0 -3
- data/share/migration/migrate.yml +0 -8
- data/share/migration/tables.sql +0 -3
- data/share/schema/build.yml +0 -14
- data/share/schema/schema/build.yml +0 -3
- data/share/schema/schema/prick/build.yml +0 -14
- data/share/schema/schema/prick/data.sql +0 -7
- data/share/schema/schema/prick/schema.sql +0 -3
- data/share/schema/schema/public/build.yml +0 -13
- data/share/schema/schema.sql +0 -3
- data/test_assorted +0 -192
- data/test_feature +0 -112
- data/test_refactor +0 -34
- data/test_single_dev +0 -83
data/.gitignore
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
/.bundle/
|
2
|
-
/.yardoc
|
3
|
-
/_yardoc/
|
4
|
-
/coverage/
|
5
|
-
/rdoc/
|
6
|
-
/pkg/
|
7
|
-
/spec/reports/
|
8
|
-
/tmp/
|
9
|
-
/spec/tmp/
|
10
|
-
|
11
|
-
# rspec failure tracking
|
12
|
-
.rspec_status
|
13
|
-
|
14
|
-
# Ignore auto-generated main file
|
15
|
-
/main
|
16
|
-
|
17
|
-
# Ignore Gemfile.lock. See https://stackoverflow.com/questions/4151495/should-gemfile-lock-be-included-in-gitignore
|
18
|
-
/Gemfile.lock
|
19
|
-
|
20
|
-
# Put your personal ignore files in /home/clr/.config/git/ignore
|
21
|
-
|
22
|
-
# Ignore bundle binstubs
|
23
|
-
/bin/prick
|
24
|
-
|
25
|
-
# Ignore development testing dir
|
26
|
-
/dir
|
27
|
-
|
28
|
-
# Ignore stove-away directory
|
29
|
-
/hold
|
data/.travis.yml
DELETED
data/doc/create_release.txt
DELETED
data/doc/flow.txt
DELETED
@@ -1,98 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
Premises:
|
4
|
-
o When a feature is developed, the release is not known => Features are
|
5
|
-
stored in subdirectories of the base version
|
6
|
-
o Because features are stored in subdirectories of the base version, releases
|
7
|
-
have to live on separate branches to avoid conflicts when two releases
|
8
|
-
use the same base version but different features
|
9
|
-
o As a side-effect a release has a record of previous releases and features
|
10
|
-
in the features/ directory
|
11
|
-
o Features are relatively orthogonal and rarely cause conflicts
|
12
|
-
|
13
|
-
o We want to maintain history => Files are not moved around
|
14
|
-
o We want to support custom releases => Releases lives on branches
|
15
|
-
o We want to be able to shortcircuit the migration chain
|
16
|
-
o We want to be able to bring custom releases back into the main line =>
|
17
|
-
Rebasing lives on separate branches
|
18
|
-
o We want to support semantic versioning
|
19
|
-
|
20
|
-
|
21
|
-
Notes:
|
22
|
-
o Referring to a tag gives you a point-in-time. Referring to a branch gives
|
23
|
-
you the newest version
|
24
|
-
o Two kinds of migrations: Feature migrations on new releases and
|
25
|
-
jump-migrations between releases
|
26
|
-
|
27
|
-
|
28
|
-
Commands
|
29
|
-
Developer:
|
30
|
-
prick checkout 0.0.0
|
31
|
-
prick feature feature_a
|
32
|
-
prick checkout feature_a-0.0.0
|
33
|
-
work...work...work
|
34
|
-
prick commit
|
35
|
-
prick checkout master
|
36
|
-
|
37
|
-
Release manager:
|
38
|
-
prick checkout 0.0.0
|
39
|
-
prick prepare 0.0.1
|
40
|
-
prick checkout 0.0.1.pre
|
41
|
-
prick merge feature_a-0.0.0 (or 'prick merge feature_a' using lookup by <feature>-<base_version>)
|
42
|
-
|
43
|
-
Developer:
|
44
|
-
prick checkout 0.0.0
|
45
|
-
prick feature feature_b
|
46
|
-
prick checkout feature_b
|
47
|
-
work...work...work
|
48
|
-
prick commit
|
49
|
-
prick checkout master
|
50
|
-
|
51
|
-
Release manager:
|
52
|
-
prick merge feature_b (conflicts!)
|
53
|
-
asks developer to rebase to current tag
|
54
|
-
|
55
|
-
Developer:
|
56
|
-
prick checkout feature_b
|
57
|
-
prick rebase 0.0.1.pre
|
58
|
-
work...work...work
|
59
|
-
prick commit
|
60
|
-
prick checkout master
|
61
|
-
|
62
|
-
Release manager:
|
63
|
-
prick merge feature_b-0.0.1.pre
|
64
|
-
|
65
|
-
|
66
|
-
Different models:
|
67
|
-
|
68
|
-
PER-DIRECTORY-MIGRATION (check)
|
69
|
-
migrations
|
70
|
-
0.0.0/
|
71
|
-
0.0.1/
|
72
|
-
...
|
73
|
-
|
74
|
-
features/ (not 'releases' because features are nested below the base release)
|
75
|
-
0.0.0/
|
76
|
-
migrate.sql (overrides everything, defaults to calling features.sql)
|
77
|
-
features.sql (list of features in merge-order, maintained by prick)
|
78
|
-
feature_a/
|
79
|
-
merge.sql (contains functions, indexes, and other stuff that doesn't require data migration)
|
80
|
-
migrate.sql (data migrations)
|
81
|
-
feature_b/
|
82
|
-
migrate.sql
|
83
|
-
|
84
|
-
0.0.0-customer/
|
85
|
-
...
|
86
|
-
|
87
|
-
'feature_a' branch:
|
88
|
-
0.0.0/
|
89
|
-
migrate.sql (auto-generated, calls feature_a/migrate.sql)
|
90
|
-
feature_a/
|
91
|
-
migrate.sql
|
92
|
-
|
93
|
-
|
94
|
-
SHARED-MIGRATION
|
95
|
-
features/
|
96
|
-
0.0.0/
|
97
|
-
migrate.sql
|
98
|
-
|
data/doc/migra
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
https://github.com/djrobstep/migra
|
data/doc/migrations.txt
DELETED
@@ -1,172 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
Each release lives on a branch of it's own and its history will only show
|
4
|
-
included features. Development happens on feature branches based on the release
|
5
|
-
|
6
|
-
A release lives on a branch because we want to be able to create more than one
|
7
|
-
release from a base release with different features and also have a single
|
8
|
-
migration file with full history
|
9
|
-
|
10
|
-
Features are kept on feature branches and only merged when a release is
|
11
|
-
created. The migration.sql file for a feature lives in the directory of the
|
12
|
-
base release. Because each feature use the same migration file, the file
|
13
|
-
will be merged by git as new features are merged into the release
|
14
|
-
|
15
|
-
If a feature is not included in a release, a new migration can be created -
|
16
|
-
either using rebase or copy. Rebase is preferred because it maintains history but
|
17
|
-
copy allows the feature to be included in other releases based on the original
|
18
|
-
|
19
|
-
migrations/
|
20
|
-
0.0.0/
|
21
|
-
migrate.sql
|
22
|
-
migrate to 0.1.0. We know that because we're on the 0.1.0 branch.
|
23
|
-
Other releases based on 0.0.0 may have different migration files
|
24
|
-
|
25
|
-
prick build & load can build release files for other branches without
|
26
|
-
touching the current branch. This is used when creating migrations
|
27
|
-
0.1.0/
|
28
|
-
migrate-0.0.0.sql
|
29
|
-
|
30
|
-
on a feature branch for 0.1.0
|
31
|
-
0.0.0/
|
32
|
-
migrate.sql <- contain migrations for this feature when based on 0.0.0
|
33
|
-
0.1.0/
|
34
|
-
migrate.sql <- contain migrations for this feature when based on 0.1.0
|
35
|
-
|
36
|
-
Problem?
|
37
|
-
0.0.0 -> 0.0.1 -> 0.0.2 ->
|
38
|
-
-> 0.0.1-special -> 0.0.2-special -> 0.0.3
|
39
|
-
|
40
|
-
Der vil være merge conflicts hele vejen ned. Alternativt finde en måde at sige,
|
41
|
-
at den ene branch vinder. Måske forbyde merge af release branches? Og i stedet
|
42
|
-
merge features fra den anden branch manuelt? Til slut kan man lave en migration
|
43
|
-
i hånden fra den anden branch
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
DEVELOPER ALICE:
|
48
|
-
create branch alice from 0.0.0
|
49
|
-
work...work...work
|
50
|
-
create migration
|
51
|
-
commit & push
|
52
|
-
|
53
|
-
DEVELOPER BOB:
|
54
|
-
create branch bob from 0.0.0
|
55
|
-
work...work...work
|
56
|
-
create migration
|
57
|
-
commit & push
|
58
|
-
|
59
|
-
DEVELOPER CHARLOTTE:
|
60
|
-
create branch charlotte from 0.0.0
|
61
|
-
work...work...work
|
62
|
-
create migration
|
63
|
-
commit & push
|
64
|
-
|
65
|
-
RELEASE MANAGER ERIC:
|
66
|
-
set base version to 0.0.0
|
67
|
-
branch to a prerelease 0.1.0. This creates a migration file in the base version
|
68
|
-
merge branch alice (no conflicts). Migration file is 0.0.0/migrate.sql
|
69
|
-
merge branch bob. Merges happens to 0.0.0/migrate.sql
|
70
|
-
mark alice and bob branches as dead
|
71
|
-
merge branch charlotte (conflicts - rolled back)
|
72
|
-
adapt migration file 0.0.0->0.1.0
|
73
|
-
create release 0.1.0
|
74
|
-
0.1.0 is now the new master branch
|
75
|
-
|
76
|
-
DEVELOPER CHARLOTTE:
|
77
|
-
checkout branch charlotte
|
78
|
-
if 0.0.0 feature is not expected to be included in other 0.0.0 based releases
|
79
|
-
rebase to 0.1.0 (no conflicts because 0.1.0 doesn't contain a migration file but probably can't run)
|
80
|
-
else
|
81
|
-
copy to 0.1.0
|
82
|
-
end
|
83
|
-
adapt migration file
|
84
|
-
commit & push
|
85
|
-
|
86
|
-
Every branch-release will have a trail of previous releases
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
features/
|
97
|
-
0.0.0/
|
98
|
-
feature_a/
|
99
|
-
migrate.sql
|
100
|
-
feature_b/
|
101
|
-
migrate.sql # Migrate off 0.0.0
|
102
|
-
0.1.0/ # Includes feature_a
|
103
|
-
migrate-0.0.0.sql # Migrate off 0.0.0
|
104
|
-
feature_b/
|
105
|
-
migrate.sql # Migrate off 0.1.0
|
106
|
-
|
107
|
-
Creating a "branch"
|
108
|
-
features/
|
109
|
-
0.0.0/
|
110
|
-
feature_a/
|
111
|
-
migrate.sql
|
112
|
-
0.1.0/
|
113
|
-
migrate-0.0.0.sql
|
114
|
-
feature_b/
|
115
|
-
migrate.sql
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
.
|
126
|
-
├── 0.0.0
|
127
|
-
│ └── migrate.sql
|
128
|
-
├── 0.0.1
|
129
|
-
│ ├── 0.0.0.sql
|
130
|
-
│ └── migrate.sql
|
131
|
-
├── 0.0.2
|
132
|
-
│ ├── 0.0.1.sql
|
133
|
-
│ └── migrate.sql
|
134
|
-
├── 0.1.0
|
135
|
-
│ └── 0.0.1.sql
|
136
|
-
└── migrate.sql
|
137
|
-
|
138
|
-
|
139
|
-
0.0.0
|
140
|
-
feature_a
|
141
|
-
migrate.sql
|
142
|
-
feature_b
|
143
|
-
migrate.sql
|
144
|
-
|
145
|
-
0.0.1
|
146
|
-
0.0.0.sql <- 0.0.0/feature_a/migrate.sql
|
147
|
-
|
148
|
-
rebasing feature_b:
|
149
|
-
|
150
|
-
feature_b
|
151
|
-
migrate.sql
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
patches/
|
163
|
-
my-fix-for-something/
|
164
|
-
schemas/
|
165
|
-
migrations/
|
166
|
-
...
|
167
|
-
my-friends-fix-for-something-else/
|
168
|
-
schemas/
|
169
|
-
migrations/
|
170
|
-
...
|
171
|
-
|
172
|
-
|
data/doc/notes.txt
DELETED
@@ -1,116 +0,0 @@
|
|
1
|
-
|
2
|
-
Git mv link
|
3
|
-
https://linuxctl.com/2016/03/git---preserve-history-when-moving-files/
|
4
|
-
|
5
|
-
Upgrade to ruby-2.7
|
6
|
-
gem update --system
|
7
|
-
https://github.com/rubygems/rubygems/issues/3284
|
8
|
-
|
9
|
-
Notes
|
10
|
-
o name defaults to
|
11
|
-
- the value of the PRICK_DATABASE environment variable
|
12
|
-
- the name of the current directory
|
13
|
-
|
14
|
-
Directory structure
|
15
|
-
Prick uses the following directory structure:
|
16
|
-
|
17
|
-
releases/
|
18
|
-
Contains a <project>-<version>.tar.gz file for each release
|
19
|
-
|
20
|
-
migrations/
|
21
|
-
|
22
|
-
.
|
23
|
-
├── 0.0.0
|
24
|
-
│ └── migrate.sql
|
25
|
-
├── 0.0.1
|
26
|
-
│ ├── 0.0.0.sql
|
27
|
-
│ └── migrate.sql
|
28
|
-
├── 0.0.2
|
29
|
-
│ ├── 0.0.1.sql
|
30
|
-
│ └── migrate.sql
|
31
|
-
├── 0.1.0
|
32
|
-
│ └── 0.0.1.sql
|
33
|
-
└── migrate.sql
|
34
|
-
|
35
|
-
Migration files are the result of merging in migrations from the branches that this
|
36
|
-
release includes. They are read-only
|
37
|
-
|
38
|
-
When a migration is created, the migration file from the from-release is copied to
|
39
|
-
to the to-release directory
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
Each migration directory contains ...
|
44
|
-
:::here it gets interesting:::
|
45
|
-
o a file listing individual patches for this release (this keeps the git
|
46
|
-
log because we don't have to move individual developer's migration
|
47
|
-
directories around)
|
48
|
-
o a script for resolving conflicting patches. Another option is to make
|
49
|
-
a changes patch/ directory and commit them as part of the git-release
|
50
|
-
|
51
|
-
patches/
|
52
|
-
my-fix-for-something/
|
53
|
-
schemas/
|
54
|
-
migrations/
|
55
|
-
...
|
56
|
-
my-friends-fix-for-something-else/
|
57
|
-
schemas/
|
58
|
-
migrations/
|
59
|
-
...
|
60
|
-
|
61
|
-
schemas/
|
62
|
-
prick/
|
63
|
-
Contains the definition of the prick database schema. The schema contains
|
64
|
-
a VERSIONS table and probably a PATCHES table
|
65
|
-
|
66
|
-
tests/
|
67
|
-
|
68
|
-
current/ -> symlink to a unique directory under patches/
|
69
|
-
|
70
|
-
snapshots/
|
71
|
-
Like releases but just a copy of the database
|
72
|
-
|
73
|
-
TODO: Keep track of patches in the database when preparing
|
74
|
-
|
75
|
-
Developing
|
76
|
-
Make your changes to schemas/ and reload often
|
77
|
-
|
78
|
-
You can generate migrations as you go:
|
79
|
-
|
80
|
-
change some definitions
|
81
|
-
run 'prick generate migration'
|
82
|
-
modify generated migration file
|
83
|
-
test
|
84
|
-
commit
|
85
|
-
|
86
|
-
Preparing
|
87
|
-
Creates a new database with the version number. The database is loaded with
|
88
|
-
the content of schemas/
|
89
|
-
|
90
|
-
The release is then built by pulling in patches from individual developers
|
91
|
-
and list them in a configuration file. Conflicts can be resolved by a script
|
92
|
-
|
93
|
-
Releasing
|
94
|
-
The content of schemas/ is executed on a fresh database and the result is
|
95
|
-
dumped to the releases/ directory. This is the only time a release is saved.
|
96
|
-
A release contains the schema and constant data but not user data
|
97
|
-
|
98
|
-
Migrating
|
99
|
-
The current database is updated using the scripts in migrations/
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
Prick
|
114
|
-
o creates a database and a user at the same time
|
115
|
-
o creates a 'prick' schema in the database with a versions table
|
116
|
-
o uses the unversioned database as work space
|
data/doc/prick.txt
DELETED
@@ -1,114 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
MIGRATION STATE FILES
|
4
|
-
.prick-migration (State file)
|
5
|
-
version: Version
|
6
|
-
The target version. The result of running the migration on the base
|
7
|
-
release
|
8
|
-
base_version: Version
|
9
|
-
Base version. Running the migration on a base release yields a release
|
10
|
-
of with the same version as the `version` property
|
11
|
-
|
12
|
-
The 0.0.0 version has base_version equal to nil. A Feature has version
|
13
|
-
equal to its base version.
|
14
|
-
|
15
|
-
Note that while a release's .prick-migration file lives in the release
|
16
|
-
directory, it's .prick-features file and the migrations lives in the
|
17
|
-
directory of the base release. This separation supports the
|
18
|
-
single-developer workflow where the next release is not known beforehand
|
19
|
-
|
20
|
-
.prick-features (State file)
|
21
|
-
features: Array
|
22
|
-
A list of features versions
|
23
|
-
|
24
|
-
MIGRATION FILES
|
25
|
-
migrate.sql
|
26
|
-
features.sql
|
27
|
-
diff.sql
|
28
|
-
|
29
|
-
|
30
|
-
MIGRATION FILE STRUCTURE
|
31
|
-
releases/
|
32
|
-
0.0.0/
|
33
|
-
.prick-migration -> version: 0.0.0, base_version: nil
|
34
|
-
.prick-features -> [feature_a]
|
35
|
-
feature_a/
|
36
|
-
.prick-migration -> version: nil, base_version: 0.0.0
|
37
|
-
.prick-features -> []
|
38
|
-
feature_b/ (rebased)
|
39
|
-
.prick-migration -> version: 0.2.0, base_version: 0.2.0-pre.1
|
40
|
-
.prick-features -> []
|
41
|
-
|
42
|
-
0.1.0/
|
43
|
-
.prick-migration -> version: 0.1.0, base_version: 0.0.0
|
44
|
-
feature_b/ symlinks to ../0.0.0/feature_b/
|
45
|
-
|
46
|
-
0.1.0/ (wip - single developer work flow)
|
47
|
-
.prick-migration -> version: 0.1.0, base_version: 0.0.0
|
48
|
-
.prick-features -> [feature_c]
|
49
|
-
feature_c/
|
50
|
-
...
|
51
|
-
|
52
|
-
0.2.0/ (doing a pre-release)
|
53
|
-
.prick-migration -> version: 0.2.0-pre.1, base_version: 0.1.0
|
54
|
-
|
55
|
-
migrations/
|
56
|
-
0.0.0_0.1.0/
|
57
|
-
.prick-migration -> version: 0.1.0, base_version: 0.0.0
|
58
|
-
.prick-features -> []
|
59
|
-
|
60
|
-
|
61
|
-
NOTES
|
62
|
-
#
|
63
|
-
# Distinguish between running a migration 0.1.0 -> 0.2.0 and running the
|
64
|
-
# migration in the 0.2.0 directory in the single-developer workflow
|
65
|
-
#
|
66
|
-
# prick migrate
|
67
|
-
# On a tag: Migrate to that tag
|
68
|
-
# On a branch: Run migrations in the release directory
|
69
|
-
#
|
70
|
-
# prick migrate 0.2.0 <- the version number reflects where to find the migration
|
71
|
-
# Runs the migration files in the release directory
|
72
|
-
#
|
73
|
-
# prick migrate 0.1.0
|
74
|
-
# Runs the migration files in the base release directory
|
75
|
-
#
|
76
|
-
#
|
77
|
-
# prick build
|
78
|
-
# Builds the current schema into the project database
|
79
|
-
#
|
80
|
-
# prick build 0.1.0
|
81
|
-
# Builds the given schema into a versioned database
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
######################
|
96
|
-
|
97
|
-
PRICK FILES
|
98
|
-
./prick-version
|
99
|
-
Contains just one line with the version of the prick command that should be
|
100
|
-
used with this project (eg. 'prick-0.1.0'). Prick checks this file at
|
101
|
-
startup and fails if the required version doesn't match the current command
|
102
|
-
|
103
|
-
./prick
|
104
|
-
project_name
|
105
|
-
Name of the project
|
106
|
-
|
107
|
-
./releases/*/.prick
|
108
|
-
base_version
|
109
|
-
The base version of this release. nil for release 0.0.0
|
110
|
-
features
|
111
|
-
List of features in a release based on this release. Initially empty
|
112
|
-
but filled in when the directory is prepared for a subsequent release.
|
113
|
-
To find the set of features in the current release, inspect the prick
|
114
|
-
file of the base_version in this branch
|