~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/generate_ids.py

  • Committer: John Arbash Meinel
  • Date: 2008-07-09 21:42:24 UTC
  • mto: This revision was merged to the branch mainline in revision 3543.
  • Revision ID: john@arbash-meinel.com-20080709214224-r75k87r6a01pfc3h
Restore a real weave merge to 'bzr merge --weave'.

To do so efficiently, we only add the simple LCAs to the final weave
object, unless we run into complexities with the merge graph.
This gives the same effective result as adding all the texts,
with the advantage of not having to extract all of them.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006, 2007, 2009, 2010, 2011 Canonical Ltd
 
1
# Copyright (C) 2006 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
"""Common code for generating file or revision ids."""
18
18
 
19
 
from __future__ import absolute_import
20
 
 
21
19
from bzrlib.lazy_import import lazy_import
22
20
lazy_import(globals(), """
23
21
import time
 
22
import unicodedata
24
23
 
25
24
from bzrlib import (
26
25
    config,
33
32
    lazy_regex,
34
33
    )
35
34
 
36
 
# the regex removes any weird characters; we don't escape them
 
35
# the regex removes any weird characters; we don't escape them 
37
36
# but rather just pull them out
38
37
_file_id_chars_re = lazy_regex.lazy_compile(r'[^\w.]')
39
38
_rev_id_chars_re = lazy_regex.lazy_compile(r'[^-\w.+@]')
43
42
 
44
43
def _next_id_suffix():
45
44
    """Create a new file id suffix that is reasonably unique.
46
 
 
 
45
    
47
46
    On the first call we combine the current time with 64 bits of randomness to
48
47
    give a highly probably globally unique number. Then each call in the same
49
48
    process adds 1 to a serial number we append to that unique value.
50
49
    """
51
 
    # XXX TODO: change bzrlib.add.smart_add_tree to call workingtree.add() rather
 
50
    # XXX TODO: change bzrlib.add.smart_add_tree to call workingtree.add() rather 
52
51
    # than having to move the id randomness out of the inner loop like this.
53
52
    # XXX TODO: for the global randomness this uses we should add the thread-id
54
53
    # before the serial #.
94
93
def gen_revision_id(username, timestamp=None):
95
94
    """Return new revision-id.
96
95
 
97
 
    :param username: The username of the committer, in the format returned by
98
 
        config.username().  This is typically a real name, followed by an
99
 
        email address. If found, we will use just the email address portion.
100
 
        Otherwise we flatten the real name, and use that.
 
96
    :param username: This is the value returned by config.username(), which is
 
97
        typically a real name, followed by an email address. If found, we will
 
98
        use just the email address portion. Otherwise we flatten the real name,
 
99
        and use that.
101
100
    :return: A new revision id.
102
101
    """
103
102
    try: