~luoyonggang/bzr-svn/b2

« back to all changes in this revision

Viewing changes to layout/guess.py

  • Committer: Jelmer Vernooij
  • Date: 2011-06-06 12:59:21 UTC
  • Revision ID: jelmer@samba.org-20110606125921-2s5iwkx7aowaafp8
Add is_likely_branch_url call.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
15
 
 
16
from subvertpy import SubversionException, ERR_FS_NOT_FOUND
 
17
import urllib
 
18
 
16
19
from bzrlib import ui
17
20
from bzrlib.trace import mutter
18
21
 
137
140
 
138
141
 
139
142
def repository_guess_layout(repository, revnum, branch_path=None):
 
143
    return logwalker_guess_layout(repository._log, revnum, branch_path=branch_path)
 
144
 
 
145
def logwalker_guess_layout(logwalker, revnum, branch_path=None):
140
146
    pb = ui.ui_factory.nested_progress_bar()
141
147
    try:
142
148
        (guessed_layout, layout) = guess_layout_from_history(
143
 
            repository._log.iter_changes(None, revnum, max(0, revnum-GUESS_SAMPLE_SIZE)), revnum, branch_path)
 
149
            logwalker.iter_changes(None, revnum, max(0, revnum-GUESS_SAMPLE_SIZE)), revnum, branch_path)
144
150
    finally:
145
151
        pb.finished()
146
152
    mutter("Guessed repository layout: %r, guess layout to use: %r" %
148
154
    return (guessed_layout, layout)
149
155
 
150
156
 
 
157
def is_likely_branch_url(url):
 
158
    """Check whether url refers to a likely branch URL.
151
159
 
 
160
    """
 
161
    from bzrlib.plugins.svn.transport import SvnRaTransport
 
162
    from bzrlib.plugins.svn.logwalker import LogWalker
 
163
    transport = SvnRaTransport(url)
 
164
    lw = LogWalker(transport=transport)
 
165
    svn_root_url = transport.get_repos_root()
 
166
    branch_path = urllib.unquote(url[len(svn_root_url):])
 
167
    try:
 
168
        (guessed_layout, _) = logwalker_guess_layout(lw, transport.get_latest_revnum())
 
169
    except SubversionException, (msg, num):
 
170
        if num == ERR_FS_NOT_FOUND:
 
171
            return False # path doesn't exist
 
172
        raise
 
173
    return guessed_layout.is_branch(branch_path)