/
Changes
1480 lines (935 loc) · 44.2 KB
/
Changes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
v1.15.1.beta.2 - 2014/3/13
Miscellaneous:
- Use a different workaround for utmp files: getpwuid(3).
v1.15.1.beta.1 - 2014/3/5
Miscellaneous:
- Work around broken utmp files by looking at the LOGNAME and USER
environment variables to get the current user before falling back on
getlogin(3).
v1.15.0 - 2014/2/24
Miscellaneous:
- When using sftp: URIs, warns if it looks like we're about to run into the
bug reported at https://github.com/net-ssh/net-sftp/issues/27. This does
nothing to actually work around the bug, but at least gives you a clue as
to what is going on.
v1.14.0 - 2014/2/10
New features:
- The return of SSH support, thanks to Alexey Klimkin. Note that this uses
external "ssh" and "scp" commands locally and expects to be able to run
"find", GNU "stat", and "mkdir" remotely.
v1.13.1.beta.2 - 2014/1/31
v1.13.1.beta.1 - 2014/1/30
- Test releases.
v1.13.0 - 2013/12/3
Bug fixes:
- Now, modulo the value of the --update-lock-response option, always locks
FIG_HOME. This is to avoid corruption of the local copy of the remote
repository's figrc. Thanks to James Fraser for the report.
- Incorrect message when the remote repository was empty when using
--list-remote.
- The "up-to-date" check for files accessed via ftp:, file:, and sftp: URLs
now includes a size check.
v1.12.1.beta.1 - 2013/11/12
- Test release.
v1.12.0 - 2013/10/14
Bug fixes:
- The --suppress-*-includes options didn't affect --include options. Thanks
to Peter Royal for the report.
Miscellaneous:
- Now looks for "application.fig" in the current directory after looking for
"package.fig". There's no semantic difference, but it provides for an
idiom for things which are "client" packages which will never be published,
but just for pulling down dependencies.
v1.11.1.beta.2 - 2013/10/11
v1.11.1.beta.1 - 2013/10/09
- Test releases.
v1.11.0 - 2013/09/25
Bug fixes:
- Fix crash with quoted command-lines.
v1.10.0 - 2013/09/25
Bug fixes:
- Command statements were not being correctly published if they contained "@"
signs.
Miscellaneous:
- Resource statements that refer to directories will now pull in the full
directory contents instead of just the directory itself.
v1.9.1.beta.2 - 2013/09/20
v1.9.1.beta.1 - 2013/09/19
- Test releases.
v1.9.0 - 2013/09/19
Bug fixes:
- You can now set FIG_SVN_EXECUTABLE and FIG_GIT_EXECUTABLE to whitespace to
turn off support for those VCSs. Windows does not allow environment
variables to be set to the empty string.
v1.8.0 - 2013/8/6
Bug fixes:
- The error message for invalid characters in path statements didn't
correctly show the bad character in question. Thanks to Jordan Samuels for
the report.
v1.7.0 - 2013/6/5
Miscellaneous:
- No functional changes, just updated gem dependencies.
v1.6.0 - 2013/4/22
New feature:
- New --suppress-warning-unused-retrieve option to turn off warnings for
retrieves that were enabled but which weren't triggered. Can also be
specified in app configuration (e.g. ~/.figrc) as an entry in the "suppress
warnings" array:
{
"suppress warnings": ["unused retrieve"]
}
v1.5.1.beta.1 - 2013/4/19
- Test release.
v1.5.0 - 2013/4/8
Bug fix:
- "@" substitution in the command-line was using the incorrect package.
Miscellaneous:
- No longer even reads $PWD/.fig/retrieve if retrieves aren't going to
happen. Should solve race conditions with other fig processes doing
updates.
- json gem dependency is now 1.7.7. Needed for Ruby v2 and whatever issue
TeamCity was having with versions later than 1.6.5 a year ago does not
appear to exist with 1.7.7.
v1.4.1.beta.1 - 2013/4/4
- Test release.
v1.4.0 - 2013/3/18
Miscellaneous:
- Small clarification in error message when failing to download an asset.
- No longer depends upon the sys-admin gem.
v1.3.1.beta.1 - 2013/3/13
- Test release.
v1.3.0 - 2013/3/5
Backwards incompatibility:
- If you specify one of FIG_USERNAME/FIG_PASSWORD, you must specify both.
Bug fixes:
- In the change to not use the environment variables/prompting for assets,
~/.netrc gained priority over the environment variables again. Fixed.
- Newlines are allowed in command-line options.
New feature:
- New --publish-comment option that allows you to put a comment at the top of
published packages. Works regardless of whether the package definition
comes from a file or other command-line options.
> fig --publish package/version --publish-comment $'This package is\n awesome!' ...
> fig --dump-package-definition-text package/version
# This package is
# awesome!
#
#
# Publishing information for package/version:
...
Miscellaneous:
- Publishing now includes VCS revision information.
For Subversion, this is from the "Revision: " in the output of "svn info".
It might be better to use the output of "svnversion", but this would
require an additional FIG_SVNVERSION_EXECUTABLE environment variable and it
seems better to keep things simpler by avoiding that.
For Git, it includes the current branch and SHA1.
v1.2.1.beta.3 - 2013/3/1
v1.2.1.beta.2 - 2013/3/1
v1.2.1.beta.1 - 2013/2/27
- Test releases.
v1.2.0 - 2013/2/26
Bug fixes:
- Unparsing of unglobbed asset paths containing single quotes was broken.
- Deal with differences between return types of stat() from Net::SFTP and
File.
New features:
- Now looks in figrc for an array under the key "environment variables to
include in comments in published packages". If present, the values of
those environment variables will, surprise, show up in the text of
published packages.
- When publishing, attempts to identify VCS (currently Subversion and Git)
URLs for the package and includes that information in comments in the
package. This can be turned off via the
--suppress-vcs-comments-in-published-packages option. The path to the VCS
programs can be controlled via the FIG_SVN_EXECUTABLE and
FIG_GIT_EXECUTABLE environment variables; individual VCS can be turned off
by setting the variable to the empty string.
- New --source-package option that will tell you what package a file was
retrieved from:
# Assuming a retrieve caused lib/libboost_timer.so to exist:
> fig --source-package lib/libboost_timer.so
boost/1.51.0.redhat6.gcc472
> fig --source-package lib
"lib" is a directory. Fig does not keep track of directories.
> fig --source-package some-local-file.txt
Don't know anything about "some-local-file.txt".
- New --suppress-retrieves option that stops "retrieve" statements from
firing, even if the --update* options are specified. Useful if you want to
do things like "fig --update package/version
--dump-package-definition-text" without clobbering anything in your current
directory.
- It is now possible to use an unpublished package from within another via a
"include-file" statement/--include-file command-line option.
This is considered an experimental feature and its behavior has not been
set in stone yet; changes may happen without notice. Comments on its
behavior, especially in terms of assets and of retrieves are welcome.
Using this statement requires grammar version 2. The
statement/command-line option takes a single argument of a path to a
package definition file, optionally followed by a colon and a config name.
If the path requires quoting, the quotes go around the path and not the
config name; this allows for use of the default config in a file path
containing a colon, e.g. MS Windows absolute paths. Given an unpublished
package in ./foo/bar/baz.fig, your can use it in ./foo/bar.fig like so:
grammar v2
config default
include-file 'bar/baz.fig':some-config
end
Note that the path is relative to including package, not relative to the
current directory.
The included package will act like a regularly published package with the
exception that retrieves will be ignored because "[package]" substitution
won't work because the package does not have a name.
Packages that use include-file cannot be published.
Miscellaneous:
- Fig now depends upon the open4 gem.
- Login behavior change for FTP with --login and for SFTP: Fig will not
attempt to use login credentials from FIG_USERNAME/FIG_PASSWORD or use
prompting for asset URLs. Credentials in ~/.netrc will continue to be
used.
- Add -T as the short option for --dump-package-definition-text.
- Add -R as the short option for --suppress-retrieves.
v1.1.1.beta.6 - 2013/2/25
v1.1.1.beta.5 - 2013/2/25
v1.1.1.beta.4 - 2013/2/21
v1.1.1.beta.3 - 2013/2/19
v1.1.1.beta.2 - 2013/2/14
v1.1.1.beta.1 - 2013/2/12
- Test releases.
v1.1.0 - 2013/2/11
Backwards incompatibilities:
- Package names and versions and config names can no longer be "." or "..".
Attempting to use one of these would produce bad effects before, so this
should not be a big deal.
- The FIG_USERNAME and FIG_PASSWORD environment variables take precedence
over values in ~/.netrc. This is a better fit with the general *nix idea
that the command-line should take precedence over the environment which
should take precedence over dotfiles.
- Removed support for SSH. It was never fully functional and depended upon
fig being installed at the same absolute path on the remote machine as it
was on the local one. Use SFTP instead.
New features:
- Graphviz (http://graphviz.org/) output for --list-dependencies and
--list-variables via --graphviz option. You'll need something that can
interpret .dot files to use this.
fig package/v1.2.3 --list-dependencies --graphviz |
dot -Tpng -o package-1.2.3.png
fig package/v1.2:config --list-variables --list-all-configs --graphviz |
dot -Tpng -o package-1.2.3.png
Since Fig just emits DOT (http://graphviz.org/content/dot-language), Fig
doesn't have a dependency upon Graphviz libraries, etc.
- Support for SFTP. Set FIG_REMOTE_URL to something like
«sftp://host:port/some/path». Note that this *requires* the use of
~/.netrc or FIG_USERNAME/FIG_PASSWORD in order to authenticate; there is no
anonymous SFTP. Thus, the use of the --login option is superfluous with
SFTP.
v1.0.1.beta.2 - 2013/2/6
v1.0.1.beta.1
- Test releases.
v1.0.0 - 2013/1/2
New features:
- New --suppress-all-includes and --suppress-cross-package-includes options
prevent package traversal. The driving use case is retrieving individual
components of path statements. Say you have a package definition that
looked like:
config default
include something/some-version
include other/whatever
add CLASSPATH=@/foo.jar
end
You could then get the portion of CLASSPATH from the package definition
only and not any dependencies via
fig --suppress-all-includes --get CLASSPATH
If you've got multiple config blocks, you can still have intra-package
dependencies take effect:
config default
include something/some-version
include other/whatever
include :base-environment
end
config base-environment
add CLASSPATH=@/foo.jar
end
You just allow those includes to work:
fig --suppress-cross-package-includes --get CLASSPATH
- New --suppress-cleanup-of-retrieves option that stops Fig from deleting
files previously downloaded as a result of a retrieve statement. Useful if
you wish to toggle between multiple configurations rapidly without waiting
for file shuffling.
v0.2.6.beta.1 - 2012/12/18
- Test release.
v0.2.5 - 2012/12/13
Backwards incompatibilities:
- The layout of $FIG_HOME has changed in a backwards-incompatible manner (See
"Bug fix" section below).
When run with a local repository created by an earlier version of Fig, Fig
will exit with the message
Local repository is in version 1 format. This version of fig can only
deal with repositories in version 2 format. Either point $FIG_HOME to a
different location or rename or delete «existing path». (Be mindful of
packages that have been published only locally.)
If you don't have any packages that were were only locally published (i.e.
created using the --publish-local option), it should be safe to simply
remove the directory and then use the --update or --update-if-missing
option to pull packages from the remote repository.
Any local repository created by this version of Fig will not be readable by
earlier versions. Fig v0.1.64 and later will fail with a "Local repository
is in version 2 format. This version of fig can only deal with repositories
in version 1 format." message when reading a repository created by this
version.
Bug fix:
- The contents of packages are no longer intermingled with archives used in
the packages, meaning that there's a smaller chance of different assets
clobbering each other and of packages getting corrupted.
v0.2.4.beta.1 - 2012/12/11
- Test release.
v0.2.3 - 2012/12/11
Backwards incompatibilities:
- Now requires Ruby v1.9.2.
Miscellaneous:
- Warns about environment variables that refer to non-existent paths after
publishing.
fig --publish package/version --set foo=@/bar
Checking status of package/version...
Publishing package/version.
Publishing using the v0 grammar.
The foo variable points to a path that does not exist
(/tmp/fig-testing/home/repos/package/version/bar); retrieve statements
that are active when this package is included may fail.
Note that this check is done after the package has been successfully
published; it does not prevent problems, but only detects potential ones.
Due to the indirect and inexact relationship between paths from asset
statements and environment variable statements, the check cannot be done
before publishing.
- Warning about unused retrieve no longer appears when there is a problem
with the variable itself.
- Stack traces of includes contain file names and "command-line" if the
includes came from package definition files or from "--include" options.
E.g.
fig --update --list-variables --include thingy/1.0.0.30 --file some-dependencies.fig --config blahblahblah
Version mismatch for package thingy (1.0.0.30 vs 1.0.0.81).
<command-line>:default
thingy/1.0.0.30:default
<command-line>:default
<some-dependencies.fig>:blahblahblah
thingy/1.0.0.81:default
- Other error message clarifications.
v0.2.2.beta.3 - 2012/12/7
v0.2.2.beta.2 - 2012/12/7
v0.2.2.beta.1 - 2012/12/6
- Test releases
v0.2.1 - 2012/11/5
Backwards incompatibilities:
- In a retrieve statement, it is now an error to have an unescaped open
square bracket ("[") that is not followed by "ackage]". In other words,
the following was previously acceptable:
retrieve VARIABLE->foo[bar]baz
You now will need to use the v1 grammar and escape the square bracket:
grammar v1
retrieve VARIABLE->foo\[bar]baz
- Next version will not support Ruby v1.8.
Bug fix:
- Bad variable name with HTTP downloads fixed.
New features:
- New --dump-package-definition-for-command-line option, useful for
previewing a package defined via the --set, --append, --archive,
--resource, --include, and --override options.
- The long in-progress v1 grammar is available. It solves a lot of
inconsistencies in the original, now v0, grammar. The primary differences
are in allowing Bourne-shell like quoting and escaping of values (double
quotes allow whitespace, single quotes turns all interpolation off, etc.)
and the command statement now can be used without involving the shell.
For the most part, this should be transparent to you.
Command-line options are treated as if they were specified in the v1
grammar.
Older versions of fig cannot read v1 format, but versions since v0.1.75
will cleanly tell you that they can't handle it.
In order to be as compatible with older fig versions, the new fig will
publish packages using the v0 grammar, if it can find a way to do so, even
if the input package definition is given in the v1 grammar. Thus, given a
package.fig file containing
grammar v1
config default
set foo='bar'
end
the published package will look like
# grammar v0
config default
set foo=bar
end
If, when publishing, fig determines that it needs to use the v1 grammar, it
will tell you why:
> fig --set 'baz=foo#bar' --publish-local v1-grammar/test
Publishing v1-grammar/test locally.
Publishing using the v1 grammar.
Grammar v1 is required because the set statement (--set option) contains a comment ("#") character.
Documentation for the new grammar is available at
https://github.com/mfoemmel/fig/wiki/v1-grammar. It may be helpful to have
a look at the old one, as well:
https://github.com/mfoemmel/fig/wiki/v0-grammar
Miscellaneous:
- The restriction on using keywords in names introduced in v0.1.71 has been
reversed. If changes are required to deal with that, there'll just be a
new grammar version introduced.
- Fewer stack traces with network errors.
v0.2.0.beta.2 - 2012/10/24
v0.2.0.beta.1 - 2012/10/12
- Test releases.
v0.1.81 - 2012/9/25
Backwards incompatibilities:
- Command statements are no longer split on whitespace and then reassembled
with space characters. Previously, the output of running a package
containing
config default
command "echo 'foo bar'" # 3 space characters between "foo" and "bar"
end
would be "foo bar"; it is now "foo bar". It is expected that few things
depended upon the old behavior.
New features:
- Command statements are no longer split on whitespace and then reassembled
with space characters. This should make what is run and what is in a
package definition file match most people's expectations.
v0.1.80.beta.1 - 2012/9/20
- Test release.
v0.1.79 - 2012/9/13
Backwards incompatibilities:
- Commands given via the command-line are no longer run through the shell if
given as multiple arguments. This should be a pretty esoteric issue, but
if you're depending upon double interpolation of command-lines or joining
of quoted expressions, then this change will break your usage of fig.
Previously, running
fig -- javac -classpath '$SOMEPATH' whatever
would pass javac the value of the SOMEPATH environment variable after fig
had manipulated it. If you still want the shell involved, pass a single
argument to fig by quoting, e.g.
fig -- 'javac -classpath $SOMEPATH whatever'
- Commands given via the command-line have the same "@" expansion done on
them that "command" statements in a package definition do, i.e. "@package"
gets replaced with the path to that package and "@" gets replaced by the
path to the base package.
New features:
- Commands given via the command-line are no longer run through the shell if
given as multiple arguments. This means that there should be fewer
surprises in usage.
Note that command statements still go through splitting on whitespace and
reassembling with space characters.
- Commands given via the command-line have the same "@" expansion done on
them that "command" statements in a package definition do, i.e. "@package"
gets replaced with the path to that package and "@" gets replaced by the
path to the base package.
Bug fixes:
- For both environment variable and command statements, at signs that follow
escaped at signs are expanded. Previously, if you had
set FOO=X\@Y@Z
then the value of FOO after expansion would be "X@Y@Z". Now it would
(correctly) be "X@Ypackage-pathZ".
- Doing a --update after a --publish-local doesn't delete the local package.
Actually, updates handle failed downloads better in general and don't
delete local copies of packages.
v0.1.78.beta.2 - 2012/9/11
v0.1.78.beta.1 - 2012/8/31
- Test releases.
v0.1.77 - 2012/8/15
Bug fixes:
- Fix for the case where the value of an environment variable statement is
the path to a symlink when a retrieve is in effect. Note that retrieves of
symlinks will be copied as the target of the symlink and not as the
symlink; however, if the retrieve is of a directory which contains
symlinks, those symlinks will be copied as symlinks.
If we have a package.fig that looks like
retrieve SOMEPATH->somewhere
config default
include foo/57
end
and the contents of the "foo" package look like
config default
set SOMEPATH=a_symlink
end
then the target of "a_symlink" will be copied to "somewhere" as the type of
the target (i.e. a file or directory). If, however, the contents of the
"foo" package look like
config default
set SOMEPATH=a_directory
end
and "a_directory" contains a symlink named "another_symlink", then
"another_symlink" will be copied to "somewhere" as a symlink.
- Retrieves of symlinks will not occur if the symlink was previously
retrieved. Previously, if you updated the same package multiple times and
that package contained symlinks, the symlinks would be recreated on every
update, even though the regular files would not.
v0.1.76 - 2012/8/7
New features:
- New --version-plain option for getting the fig version without any nice
formatting (and no trailing newline in the output). Useful for programatic
access to the fig version.
v0.1.75 - 2012/8/1
Backwards incompatibilities:
- Unquoted archive statements now have their values globbed if they don't
look like URLs. If you happen to have a statement like
archive some/path/foo?bar*.tar.gz
then this will match files that it did not previously find.
New features:
- Asset statements now behave identically, with the exception of the
extraction of archive statements and the path preservation of resource
statements. Previously, archives weren't globbed, i.e. you couldn't say
archive yadda/*.tar.gz
You had to specify all archives individually.
- New --run-command-statement option that allows you to run command
statements in unpublished packages. (No more need to publish to test
whether they work!) Say you have a package.fig file in the current
directory that looks like
config default
command "echo hello!"
end
If you just run "fig", it still says that there's nothing to do, but it
additionally warns you about the situation. You can get non-default
commands to run using the --config option, e.g. "fig
--run-command-statement --config run-chrome":
config run-chrome
command "chrome ..."
end
- New grammar statement to allow for future expansion. Syntax:
grammar v<number>
This statement is only valid as the first statement in a package
definition. In other words
grammar v0
config default
end
is valid, but
config default
end
grammar v0
is not. The only valid version right now is 0, but this means that we can
change the syntax in the future without breaking any existing packages.
Note that this statement will be emitted for all published packages, but
will be commented out so that older versions of Fig can still read them.
For example, the significant parts of the package definition generated by
"fig --publish foo/5 --set variable=value" are:
# grammar v0
config default
set variable=value
end
v0.1.74.beta.3 - 2012/7/27
v0.1.74.beta.2 - 2012/7/27
v0.1.74.beta.1 - 2012/7/27
- Test releases.
v0.1.73 - 2012/7/12
Backwards incompatibilities:
- --update-lock-response is, for the time being, no longer supported on
Windows. Dealing with file locking on Windows is hard and we don't have
the time to figure it right now.
Bug fixes:
- FIG_HOME locking didn't cover all the situations that it should have, e.g.
the --clean option.
- Crash when --command-extra-args was specified without a package descriptor.
v0.1.72.beta.2
v0.1.72.beta.1
- Test releases
v0.1.71 - 2012/6/25
Backwards incompatibilities:
- Packages, resources, archives, and configs cannot have names that are
keywords (other than "config") in order to have more clear parse error
messages and allow for future expandability. (You didn't really want a
package named "end" did you?)
New features:
- Default for --update-lock-response is now "wait" instead of "fail".
However, if a pre-existing lock is encountered and you haven't explicitly
specified "--update-lock-response wait", you'll get a warning about the
wait. Note that this warning is not influenced by --log-level.
- Can specify the location of the remote repository via ~/.figrc or the value
of the --figrc parameter by specifying a value for "default
FIG_REMOTE_URL", e.g.
{ "default FIG_REMOTE_URL" : "file:///some/path" }
- New --dump-package-definition-text option, which gives you the text of the
base package. Useful for looking at published packages.
- New --dump-package-definition-parsed option, which, surprise, gives you the
the base package after Fig has digested it. Note that you won't see the
result of --set/--append/--archive/--resource options in this because those
get stored outside of the base package.
- Warns on ignored --archive/--resource options.
- The output "--help" was getting way too long. The text that it now emits
is non-comprehensive, but it should fit onto a single screen and includes
pointers to the new "--options" and "--help-long" options.
Bug fixes:
- Loading an overridden package version that had one config include another
config of the same package could cause problems in some circumstances.
v0.1.70.beta.1
- Test release.
v0.1.69 - 2012/6/20
Backwards incompatibilities:
- While publishing, you cannot simultaneously have a package definition file
(e.g. "package.fig") and use environment variable options (--set/--append).
Previous to now, any package definition file would simply be ignored and
the publish would happen based upon the environment variable options.
- Easier to understand, yet unlikely to already exist case:
fig package/1.2.3 --publish --set VARIABLE=VALUE --file non-default.fig
Is this supposed to mean publish based upon the --set option or the
--file option? Again, it was the former, but that was non-obvious.
- More likely existing case:
fig package/1.2.3 --publish --set VARIABLE=VALUE
while there is a "package.fig" file in the current directory.
Workaround: use the "--no-file" option:
fig package/1.2.3 --publish --set VARIABLE=VALUE --no-file
Just to be clear, it's perfectly fine (and useful) to have combined a
package definition file and environment variable options when not
publishing.
New feature (and backwards incompatibility):
- Locks FIG_HOME when updating. (Or attempts to. If FIG_HOME is on NFS, all
bets are off.) By default, if Fig is updating and notices another instance
updating, it will fail. You can override this behavior via
--update-lock-response. Specify "wait" to get Fig to wait for lock release
or "ignore" for it to skip lock checking.
The default behavior of failing was chosen to prevent surprises in the
scenario of starting multiple servers out of the same directory:
for exchange in cme ice liffe cboe
do
fig --update -- run-server $exchange &
done
If Fig defaulted to waiting, the above scenario would silently cause three
out of the four servers to block until the other one's updates were
finished.
Bug fixes:
- Specifying --update with FIG_REMOTE_URL using FTP should be fast as it used
to be.
- Skips retrieving directories and files to themselves. (Tragic accident of
retrieving "." onto itself resulted in a corrupted git repo.)
v0.1.68.beta.2
v0.1.68.beta.1
- Test releases
v0.1.67 - 2012/6/7
Backwards incompatibilities:
- The --update and --update-if-missing options are always paid attention to.
(Hey, you said update; Fig endeavors to comply.) This causes problems where
these were previously ignored.
- If you specify --clean, you'll get an error about the options not
agreeing about whether the base package should be loaded.
- Publishing may fail if you have versionless includes. Workaround: don't
use versionless includes or do the update and the publish separately.
Bug fixes:
- Updating and using any of the --list-* options would delete any previously
retrieved files.
- More fixes in dealing with symlinks.
- Better error reporting for failed installations and package version
conflicts.
v0.1.66.beta.2
v0.1.66.beta.1
- Test releases
v0.1.65 - 2012/5/21
Bug fixes:
- Treat trailing double-slashes in environment variable statements as if they
weren't there, i.e.
set FOO=blah//
is the same as
set FOO=blah
v0.1.64 - 2012/5/21
Backwards incompatibilities:
- --set and --append command-line options now take priority over package.fig
files and --include options are now processed after any "include"
statements.
Previously, "fig foo/1.2.3 --set SET=command-line --append
APPEND=command-line --include command-line/1.2.3" was equivalent to
config default
set SET=command-line
add APPEND=command-line
include command-line/1.2.3
include foo/1.2.3
end
Now it is equivalent to
config default
include foo/1.2.3