##// END OF EJS Templates
Teach import to understand git diff extensions....
Teach import to understand git diff extensions. Vanilla patch chokes on git patches that include files that are copied or renamed, then modified. So this code detects that case and rewrites the patch if necessary.

File last commit:

r2859:345bac2b default
r2860:b3d1145e default
Show More
changelog.py
48 lines | 1.6 KiB | text/x-python | PythonLexer
mpm@selenic.com
changelog: adjust imports, comment
r1095 # changelog.py - changelog class for mercurial
mpm@selenic.com
Break apart hg.py...
r1089 #
# Copyright 2005 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.
from revlog import *
Benoit Boissinot
i18n first part: make '_' available for files who need it
r1400 from i18n import gettext as _
Bryan O'Sullivan
Clean up date and timezone handling....
r1321 from demandload import demandload
demandload(globals(), "os time util")
mpm@selenic.com
Break apart hg.py...
r1089
class changelog(revlog):
Thomas Arendsen Hein
Replaced 0 with REVLOGV0 where this meaning is used.
r2142 def __init__(self, opener, defversion=REVLOGV0):
mason@suse.com
Implement revlogng....
r2072 revlog.__init__(self, opener, "00changelog.i", "00changelog.d",
defversion)
mpm@selenic.com
Break apart hg.py...
r1089
def extract(self, text):
if not text:
Matt Mackall
Fix data reported for the nullid changeset
r1364 return (nullid, "", (0, 0), [], "")
mpm@selenic.com
Break apart hg.py...
r1089 last = text.index("\n\n")
desc = text[last + 2:]
l = text[:last].splitlines()
manifest = bin(l[0])
user = l[1]
Bryan O'Sullivan
Clean up date and timezone handling....
r1321 date = l[2].split(' ')
Bryan O'Sullivan
Some repos represent a date as a float.
r1327 time = float(date.pop(0))
Bryan O'Sullivan
Clean up date and timezone handling....
r1321 try:
# various tools did silly things with the time zone field.
timezone = int(date[0])
except:
timezone = 0
mpm@selenic.com
Break apart hg.py...
r1089 files = l[3:]
Bryan O'Sullivan
Clean up date and timezone handling....
r1321 return (manifest, user, (time, timezone), files, desc)
mpm@selenic.com
Break apart hg.py...
r1089
def read(self, node):
return self.extract(self.revision(node))
def add(self, manifest, list, desc, transaction, p1=None, p2=None,
user=None, date=None):
Bryan O'Sullivan
Validate user input of dates when adding a changelog entry.
r1195 if date:
Benoit Boissinot
validate the resulting date in parsedate
r2523 parseddate = "%d %d" % util.parsedate(date)
Bryan O'Sullivan
Validate user input of dates when adding a changelog entry.
r1195 else:
Jose M. Prieto
Allow the use of human readable dates (issue 251)
r2522 parseddate = "%d %d" % util.makedate()
mpm@selenic.com
Break apart hg.py...
r1089 list.sort()
Jose M. Prieto
Allow the use of human readable dates (issue 251)
r2522 l = [hex(manifest), user, parseddate] + list + ["", desc]
mpm@selenic.com
Break apart hg.py...
r1089 text = "\n".join(l)
return self.addrevision(text, transaction, self.count(), p1, p2)