-2006-10-28 Han-Wen Nienhuys <hanwen@lilypond.org>
+2006-10-29 Han-Wen Nienhuys <hanwen@lilypond.org>
- git commit 64179afe25bf5723fe9bb5a6631799c050d12de2
+ * buildscripts/git-update-changelog.py (main): write .msg and cvs command.
+
+ * scm/define-grobs.scm:
+ separation-items have width
+
+ * VERSION:
+ bump version
+
+ * .gitignore:
+ * Documentation/topdocs/NEWS.tely:
+ * lily/separating-group-spanner.cc:
+ * lily/slur-engraver.cc:
+ * lily/slur-scoring.cc:
+ * scm/define-grobs.scm:
+ * input/regression/slur-clef.ly:
+ add breakableSeparationItem to extra encompass for slurs. This
+ fixes slur/clef slur/key collisions etc. Should fix #49
+ * lily/include/slur-scoring.hh:
+ * lily/slur-scoring.cc:
+ Use X of separation item as slur start. Fixes #120
+
+2006-10-29 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * buildscripts/git-update-changelog.py (changelog_body): don't
+ write committishes.
+
+ * lily/grob.cc: add avoid-slur
+
+2006-10-28 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * emacsclient.patch:
+ * server.el.patch:
+ move server/emacsclient to elisp/
+
+ * buildscripts/git-update-changelog.py (Commit.note_del_file):
+ apply patches too
+
+ * elisp/server.el.patch:
+ move emacs patches.
+
+ * elisp/emacsclient.patch:
+ emacsclient too.
+
* buildscripts/git-update-changelog.py:
ignore ChangeLog
- git commit 614460c52e72c96824da0a583297123e510f6fff
-
* .gitignore:
update
- git commit 6ca40e8913957dd9fa510855ae1c4efacde09603
-
* ChangeLog:
* buildscripts/git-update-changelog.py:
script to update ChangeLog with Git messages.
- git commit ef70710d3cf52502900408aa1f55a2354ed4e8ab
-
* lily/beam-engraver.cc:
* input/regression/rest-pitched-beam.ly:
don't set callback if staff-position set. Fixes #126.
- git commit 6dcaa230251aa4f95e4153bd4de021c65207b798
-
* lily/bar-number-engraver.cc:
* lily/beam.cc:
* lily/fingering-engraver.cc:
* lily/tie.cc:
internal_get_property_data() using ly_symbol2scm()
- git commit 914e47b38f98b87c2622a5bbd8237ca97f97da34
-
* stepmake/stepmake/generic-targets.make:
create .gitignore in outdir.
- git commit 122da86232bb745d50cddbd893e3cc48c3af6216
-
* .gitignore:
new file.
2006-10-26 Graham Percival <gpermus@gmail.com>
- * Documentation/user/ {basic-, global}: minor changes from mailist.
+ * Documentation/user/{basic-, global}: minor changes from mailist.
2006-10-26 Erlend Aasland <erlenda@gmail.com>
* flower/include/std-vector.hh
* flower/include/array.hh (concat): Globally change to insert ().
-
* flower/include/std-vector.hh
* flower/include/parray.hh
* flower/include/array.hh (elem, elem_ref): Globally replace by
* lily/staff-performer.cc (initialize): add tempo/name to
audio_staff_
-
2005-08-26 Graham Percival <gpermus@gmail.com>
* Documentation/user/advanced.itely: add text-only example.
#!/usr/bin/python
+import sys
import time
import os
import re
def read_pipe (x):
print 'pipe', x
return os.popen (x).read ()
+def system (x):
+ print x
+ return os.system (x)
+
+class PatchFailed(Exception):
+ pass
class Commit:
def __init__ (self, dict):
'author',
'committish'):
self.__dict__[v] = dict[v]
-
- # Sat Oct 28 18:52:30 2006 +0200
self.date = ' '.join (self.date.split (' ')[:-1])
self.date = time.strptime (self.date, '%a %b %d %H:%M:%S %Y')
-
+
m = re.search ('(.*)<(.*)>', self.author)
- self.email = m.group (2)
- self.name = m.group (1)
-
+ self.email = m.group (2).strip ()
+ self.name = m.group (1).strip ()
+ self.diff = read_pipe ('git show %s' % self.committish)
+
def touched_files (self):
-
files = []
def note_file (x):
files.append (x.group (1))
return ''
-
- diff = read_pipe ('git show %s' % self.committish)
+
re.sub ('\n--- a/([^\n]+)\n',
- note_file, diff)
+ note_file, self.diff)
re.sub('\n--- /dev/null\n\\+\\+\\+ b/([^\n]+)',
- note_file, diff)
+ note_file, self.diff)
return files
-def parse_commit_log (log):
- print log
+ def apply (self, add_del_files):
+ def note_add_file (x):
+ add_del_files.append (('add', x.group (1)))
+ return ''
+
+ def note_del_file (x):
+ add_del_files.append (('del', x.group (1)))
+ return ''
+
+ re.sub('\n--- /dev/null\n\\+\\+\\+ b/([^\n]+)',
+ note_add_file, self.diff)
+
+ re.sub('\n--- a/([^\n]+)\n\\+\\+\\+ /dev/null',
+ note_del_file, self.diff)
+
+ p = os.popen ('patch -f -p1 ', 'w')
+ p.write (self.diff)
+
+ if p.close ():
+ raise PatchFailed, self.committish
+
+def parse_commit_log (log):
committish = re.search ('^([^\n]+)', log).group (1)
author = re.search ('\nAuthor:\s+([^\n]+)', log).group (1)
date_match = re.search ('\nDate:\s+([^\n]+)', log)
return []
commits = map (parse_commit_log, re.split ('\ncommit ', log))
+ commits.reverse ()
return commits
def changelog_body (commit):
- s = ''
- s += "\ngit commit %s\n" % commit.committish
s += ''.join ('\n* %s: ' % f for f in commit.touched_files())
s += '\n' + commit.message
s = s.replace ('\n', '\n\t')
s += '\n'
return s
-
-def find_last_checked_in_commit (log):
- m = re.match ('^(\\d+-\\d+-\\d+)[^\n]+\n*\tgit commit ([a-f0-9]+)', log)
-
- if m:
- return (m.group (1), m.group (2))
-
- return None
-
-
-
def main ():
- p = optparse.OptionParser ("usage git-update-changelog.py --options")
+ p = optparse.OptionParser (usage="usage git-update-changelog.py [options]",
+ description="""
+Apply GIT patches and update change log.
+
+Run this file from the CVS directory, with --git-dir
+""")
p.add_option ("--start",
action='store',
default='',
dest="start",
help="start of log messages to merge.")
+
+ p.add_option ("--git-dir",
+ action='store',
+ default='',
+ dest="gitdir",
+ help="the GIT directory to merge.")
(options, args) = p.parse_args ()
log = open ('ChangeLog').read ()
if not options.start:
- (time, id) = find_last_checked_in_commit (log)
- options.start = id
-
- print 'processing commits from ', id, options.start
+ print 'Must set start committish.'
+ sys.exit (1)
+ if options.gitdir:
+ os.environ['GIT_DIR'] = options.gitdir
+
commits = parse_add_changes (options.start)
if not commits:
return
first = header (commits[0]) + '\n'
if first == log[:len (first)]:
log = log[len (first):]
+
+ file_adddel = []
+ final_log = ''
for c in commits:
+ print 'patch ', c.committish
+ try:
+ c.apply (file_adddel)
+ except PatchFailed:
+ break
+
if c.touched_files () == ['ChangeLog']:
continue
new_log += header (last_commit)
- new_log += changelog_body (c)
+ new_log = changelog_body (c) + new_log
last_commit = c
+
+ final_log += self.message + '\n'
+
+ for (op, f) in file_adddel:
+ if op == 'del':
+ system ('cvs remove %(f)s' % locals ())
+ if op == 'add':
+ system ('cvs add %(f)s' % locals ())
+
new_log = header (last_commit) + new_log + '\n'
log = new_log + log
+
try:
os.unlink ('ChangeLog~')
- except IOError:
+ except OSError:
pass
os.rename ('ChangeLog', 'ChangeLog~')
open ('ChangeLog', 'w').write (log)
+
+ open ('.msg','w').write (final_log)
+ print 'cvs commit -F .msg '
main ()