mercurial/strutil.py
author Mads Kiilerich <madski@unity3d.com>
Mon, 10 Feb 2014 00:43:54 +0100
branchstable
changeset 20415 e4d7cbc94219
parent 10263 25e572394f5c
child 25979 b723f05ec49b
permissions -rw-r--r--
merge: don't overwrite file untracked after remove, abort with 'untracked files' Merge could overwrite untracked files and cause data loss. Instead we now handle the 'local side removed file and has untracked file instead' case as the 'other side added file that local has untracked' case: FILE: untracked file exists abort: untracked files in working directory differ from files in requested revision It could perhaps make sense to create .orig files when overwriting, either instead of aborting or when overwriting anyway because of force ... but for now we stay consistent with similar cases.

# strutil.py - string utilities for Mercurial
#
# Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.

def findall(haystack, needle, start=0, end=None):
    if end is None:
        end = len(haystack)
    if end < 0:
        end += len(haystack)
    if start < 0:
        start += len(haystack)
    while start < end:
        c = haystack.find(needle, start, end)
        if c == -1:
            break
        yield c
        start = c + 1

def rfindall(haystack, needle, start=0, end=None):
    if end is None:
        end = len(haystack)
    if end < 0:
        end += len(haystack)
    if start < 0:
        start += len(haystack)
    while end >= 0:
        c = haystack.rfind(needle, start, end)
        if c == -1:
            break
        yield c
        end = c - 1