summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kastrup <dak@gnu.org>2013-11-25 00:59:55 +0100
committerDavid Kastrup <dak@gnu.org>2013-12-01 12:39:35 +0100
commit15b9d5a33fe02826075a651e96ae21d2ae66a680 (patch)
tree22412868b225498c74deeabdf7b7688a291f5710
parentca313ffb0f6a3fe1dd5bcacfcabe2edd7a50697e (diff)
Issue 3675: Make convert-ly -d only ever update on changed files
Previously, it updated unconditionally whenever a new stable version came out, leading to merge conflicts. When the final applied conversion is to an unstable version and the following stable version is not beyond the conversion target, the following stable version is used. Note that this rule does not make a factual difference for continuous updates of a code base (the normal use case for scripts/auxiliar/update-with-convert-ly.sh), but it makes a difference for the conversion/import of code that may have fallen behind a lot (like with the LSR import, or when converting archived files).
-rw-r--r--Documentation/usage/updating.itely7
-rw-r--r--scripts/convert-ly.py19
2 files changed, 15 insertions, 11 deletions
diff --git a/Documentation/usage/updating.itely b/Documentation/usage/updating.itely
index 06a960ac8a..ad92a834e3 100644
--- a/Documentation/usage/updating.itely
+++ b/Documentation/usage/updating.itely
@@ -151,8 +151,11 @@ The following options can be given:
@item -d, --diff-version-update
increase the @code{\version} string only if the file has actually
been changed. In that case, the version header will correspond to
-the version after the last actual change. Without that option,
-the version will reflect the last @emph{attempted} conversion.
+the version after the last actual change. An unstable version
+number will be rounded up to the next stable version number unless
+that would exceed the target version number. Without this option,
+the version will instead reflect the last @emph{attempted}
+conversion.
@item -e, --edit
Apply the conversions direct to the input file, modifying it
diff --git a/scripts/convert-ly.py b/scripts/convert-ly.py
index 641d763713..ede9d4a98b 100644
--- a/scripts/convert-ly.py
+++ b/scripts/convert-ly.py
@@ -292,17 +292,18 @@ def do_one_file (infile_name):
# Note that last_change can be set even if the result is
# the same if two conversion rules cancelled out
if result == input:
- # check the y in x.y.z (minor version number)
- previous_stable = (last[0], 2*(last[1]/2), 0)
- if ((last[0:2] != from_version[0:2]) and
- (previous_stable > from_version)):
- # previous stable version
- last = previous_stable
- else:
- # make no (actual) change to the version number
- last = from_version
+ # make no (actual) change to the version number
+ last = from_version
else:
last = last_change
+ # If the last update was to an unstable version
+ # number, and the final update target is no longer in
+ # the same unstable series, we update to the stable
+ # series following the unstable version.
+ if last[1]%2: # unstable
+ next_stable = (last[0], last[1]+1, 0)
+ if next_stable <= to_version:
+ last = next_stable
newversion = r'\version "%s"' % tup_to_str (last)
if lilypond_version_re.search (result):