* P4 Sync problem @ 2009-11-10 13:56 Dmitry Smirnov 2009-11-11 8:43 ` Tor Arvid Lund 0 siblings, 1 reply; 9+ messages in thread From: Dmitry Smirnov @ 2009-11-10 13:56 UTC (permalink / raw) To: git Hi, I'm trying to import Perfoce client into Git repository. I had configured git-p4.clent=MYCLIENT and git-p4.useclientspec=true. When runnign git p4 sync --verbose I got the follwing: c:\p4\views\Git\p4client>git p4 sync --verbose Reading pipe: git config git-p4.useclientspec Reading pipe: git config git-p4.user Reading pipe: git config git-p4.password Reading pipe: git config git-p4.port Reading pipe: git config git-p4.host Reading pipe: git config git-p4.client p4 -c MYCLIENT -G client -o Opening pipe: p4 -c MYCLIENT -G client -o Reading pipe: git rev-parse --symbolic --remotes branches: [] Getting p4 changes for ... Traceback (most recent call last): File "/usr/sbin/git-core//git-p4", line 1929, in ? main() File "/usr/sbin/git-core//git-p4", line 1924, in main if not cmd.run(args): File "/usr/sbin/git-core//git-p4", line 1676, in run changes = p4ChangesForPaths(self.depotPaths, self.changeRange) File "/usr/sbin/git-core//git-p4", line 442, in p4ChangesForPaths assert depotPaths AssertionError I would appreciate if someone help to solve this problem. Dmitry ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: P4 Sync problem 2009-11-10 13:56 P4 Sync problem Dmitry Smirnov @ 2009-11-11 8:43 ` Tor Arvid Lund 2009-11-11 9:43 ` Dmitry Smirnov 0 siblings, 1 reply; 9+ messages in thread From: Tor Arvid Lund @ 2009-11-11 8:43 UTC (permalink / raw) To: Dmitry Smirnov; +Cc: git On Tue, Nov 10, 2009 at 2:56 PM, Dmitry Smirnov <divis1969@gmail.com> wrote: > Hi, > > I'm trying to import Perfoce client into Git repository. > I had configured git-p4.clent=MYCLIENT and git-p4.useclientspec=true. > > When runnign git p4 sync --verbose I got the follwing: > > c:\p4\views\Git\p4client>git p4 sync --verbose <snip> > Traceback (most recent call last): > File "/usr/sbin/git-core//git-p4", line 1929, in ? > main() > File "/usr/sbin/git-core//git-p4", line 1924, in main > if not cmd.run(args): > File "/usr/sbin/git-core//git-p4", line 1676, in run > changes = p4ChangesForPaths(self.depotPaths, self.changeRange) > File "/usr/sbin/git-core//git-p4", line 442, in p4ChangesForPaths > assert depotPaths > AssertionError Hi. So - I think the problem is that git-p4 doesn't understand what it is you want to sync. The git-p4.useclientspec flag was created for the purpose where your perforce depot may look like this: //depot/project1 //depot/project1/source_code //depot/project1/documentation //depot/project1/some_large_collection_of_binaries Then - if I set up my client spec like: //depot/... -//depot/project1/some_large_collection_of_binaries ... and do git p4 sync //depot/project1@all ... it should get all project1 files except the "some_large_collection_of_binaries" subdirectory (provided that you have set the git-p4.client and git-p4.useclientspec). -Tor Arvid- ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: P4 Sync problem 2009-11-11 8:43 ` Tor Arvid Lund @ 2009-11-11 9:43 ` Dmitry Smirnov 2009-11-11 12:00 ` Tor Arvid Lund 0 siblings, 1 reply; 9+ messages in thread From: Dmitry Smirnov @ 2009-11-11 9:43 UTC (permalink / raw) To: git Tor Arvid Lund <torarvid <at> gmail.com> writes: > Hi. So - I think the problem is that git-p4 doesn't understand what it > is you want to sync. I believe it will never understand that until self.depotPaths will be initialized. It looks like it is intitilized from argument list only (or from already saved settings). See P4Sync.run(). But self.getClientSpec() which is called some time before, does not init neither self.depotPaths nor args. I had fixed this with the following code (new lines marked with +): if self.useClientSpec or gitConfig("git-p4.useclientspec") == "true": + if self.verbose: + print "Get client spec" self.getClientSpec() + if self.verbose: + print "Client Spec Dirs: %s" % self.clientSpecDirs + if len(args) == 0: + for item in self.clientSpecDirs: + k,v = item + args.append(k) Unfortunately, this fails on another stage: >git p4 sync --verbose Reading pipe: git config git-p4.useclientspec Get client spec Reading pipe: git config git-p4.user Reading pipe: git config git-p4.password Reading pipe: git config git-p4.port Reading pipe: git config git-p4.host Reading pipe: git config git-p4.client p4 -c MYCLIENT-G client -o Opening pipe: p4 -c MYCLIENT-G client -o Client Spec Dirs:[ <my paths here> ] Doing initial import of <my paths here> from revision #head into refs/remotes/p4/master p4 -c MYCLIENT-G files <my paths here appended with ...#head > Opening pipe: p4 -c MYCLIENT-G files <my paths here appended with ...#head > p4 returned an error: //MYCLIENT/path/file.c/...#head> - file(s) not in client view. My client spec contains some line to the file: -//depot/path/... //MYCLIENT/null/... //depot/path/file.cs //MYCLIENT/path/file.cs This means that I wish to sync only file.cs into my client and get rid of other files in this directory. BTW, note that file extension is truncated in the log Dmitry ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: P4 Sync problem 2009-11-11 9:43 ` Dmitry Smirnov @ 2009-11-11 12:00 ` Tor Arvid Lund 2009-11-11 12:39 ` Dmitry Smirnov 0 siblings, 1 reply; 9+ messages in thread From: Tor Arvid Lund @ 2009-11-11 12:00 UTC (permalink / raw) To: Dmitry Smirnov; +Cc: git On Wed, Nov 11, 2009 at 10:43 AM, Dmitry Smirnov <divis1969@gmail.com> wrote: > Tor Arvid Lund <torarvid <at> gmail.com> writes: > >> Hi. So - I think the problem is that git-p4 doesn't understand what it >> is you want to sync. > > I believe it will never understand that until self.depotPaths > will be initialized. Correct. > It looks like it is intitilized from argument list only (or from already saved > settings). See P4Sync.run(). Also correct, me thinks. > But self.getClientSpec() which is called some time before, does not init neither > self.depotPaths nor args. Correct again. The useclientspec flag was created (by me) as a simple way to filter out files that I did not want to download (the reason being my company tends to mix binaries with source files causing unnecessary long sync times). So it was never used to tell git-p4 _what_ to sync, but rather what to _not_ sync. So - in your case, you could have tried to just say "git p4 sync //depot@all", and if your clientspec contained, say, only "//depot/path/projectX", then projectX should be the only thing that got downloaded. Keep in mind, though, that git-p4 would still ask the p4 server for _all_ of its changelists, loop through them, and check each file in each changelist against the clientSpecDirs array... > I had fixed this with the following code (new lines marked with +): > if self.useClientSpec or gitConfig("git-p4.useclientspec") == "true": > + if self.verbose: > + print "Get client spec" > self.getClientSpec() > + if self.verbose: > + print "Client Spec Dirs: %s" % self.clientSpecDirs > + if len(args) == 0: > + for item in self.clientSpecDirs: > + k,v = item > + args.append(k) Well, I see what you're trying to do, but I would not want to see that patch in the official script, because some (most?) people (myself, at least) use git-p4 to clone single projects out of a perforce depot that may contain many projects. I do this myself by doing: git p4 clone //depot/path/to/projectX@all I usually use one clientspec in perforce, and I do not want to change that... With your patch, I would be in trouble since my clientspec contains "//depot/..." (followed by a lot of lines starting with '-') > Unfortunately, this fails on another stage: > >>git p4 sync --verbose <snip> > Opening pipe: p4 -c MYCLIENT-G files <my paths here appended with ...#head > > p4 returned an error: //MYCLIENT/path/file.c/...#head> - file(s) not in client > view. > > My client spec contains some line to the file: > -//depot/path/... //MYCLIENT/null/... > //depot/path/file.cs //MYCLIENT/path/file.cs > > This means that I wish to sync only file.cs into my client and get rid of other > files in this directory. > BTW, note that file extension is truncated in the log Yep - this is a bug (or lack of a feature, if you will...). The clientspec functionality in git-p4 supports directories only. If you look at the getClientSpec function, you see that it looks for "...". It's probably an easy fix if you want to support having single files in the client spec. I didn't (and don't) need it, so it didn't occur to me at the time... If you want to fix it, you might want to rename clientSpecDirs to clientSpecEntries or something like that. Btw... Am I understanding correctly what it is you wish to accomplish? I'm guessing that you have a perforce server with a client spec set up, and you want to sync everything on the entire server according to that client spec? -Tor Arvid- ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: P4 Sync problem 2009-11-11 12:00 ` Tor Arvid Lund @ 2009-11-11 12:39 ` Dmitry Smirnov 2009-11-11 13:54 ` Tor Arvid Lund 2009-11-15 13:00 ` Pete Wyckoff 0 siblings, 2 replies; 9+ messages in thread From: Dmitry Smirnov @ 2009-11-11 12:39 UTC (permalink / raw) To: git Tor Arvid Lund <torarvid <at> gmail.com> writes: > Well, I see what you're trying to do, but I would not want to see that > patch in the official script, because some (most?) people (myself, at > least) use git-p4 to clone single projects out of a perforce depot > that may contain many projects. I do this myself by doing: > > git p4 clone //depot/path/to/projectX <at> all > > I usually use one clientspec in perforce, and I do not want to change > that... With your patch, I would be in trouble since my clientspec > contains "//depot/..." (followed by a lot of lines starting with '-') Well, does this mean that if you try to sync the client in perforce (visual or command line), you will sync all the projects? In that case, git p4 will require significant effort to satisfy both of us :-) Unfortunatly, it seems I'm in minory group of git-p4 users... i would propose to use both command-line arguments and a client spec to create a correct filter of what should be synced/cloned. BTW, it looks this script does not honor neither the order of paths in the spec (which can be important) nor mapping of the files to a local tree. > If you want to fix it, you might want to rename clientSpecDirs to > clientSpecEntries or something like that. For now, I just commented out two lines in the run() procedure: #if not p.endswith("/"): # p += "/" > Btw... Am I understanding correctly what it is you wish to accomplish? > I'm guessing that you have a perforce server with a client spec set > up, and you want to sync everything on the entire server according to > that client spec? yes. Client spec completely defines the project layout for me. It contains paths to some components that are mapped to the client working tree. Just if your CS contain //depot/path/to/projectX/... //CLIENT/... ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: P4 Sync problem 2009-11-11 12:39 ` Dmitry Smirnov @ 2009-11-11 13:54 ` Tor Arvid Lund 2009-11-11 14:57 ` Dmitry Smirnov 2009-11-15 13:00 ` Pete Wyckoff 1 sibling, 1 reply; 9+ messages in thread From: Tor Arvid Lund @ 2009-11-11 13:54 UTC (permalink / raw) To: Dmitry Smirnov; +Cc: git On Wed, Nov 11, 2009 at 1:39 PM, Dmitry Smirnov <divis1969@gmail.com> wrote: > Tor Arvid Lund <torarvid <at> gmail.com> writes: > > >> Well, I see what you're trying to do, but I would not want to see that >> patch in the official script, because some (most?) people (myself, at >> least) use git-p4 to clone single projects out of a perforce depot >> that may contain many projects. I do this myself by doing: >> >> git p4 clone //depot/path/to/projectX <at> all >> >> I usually use one clientspec in perforce, and I do not want to change >> that... With your patch, I would be in trouble since my clientspec >> contains "//depot/..." (followed by a lot of lines starting with '-') > > Well, does this mean that if you try to sync the client in perforce (visual or > command line), you will sync all the projects? Yes, but I generally try to not use perforce, but git instead :-) > In that case, git p4 will require significant effort to satisfy both of us :-) > Unfortunatly, it seems I'm in minory group of git-p4 users... I don't know, but if I were to guess, then yes, you probably are... If you have a complex perforce client spec setup, then there may of course be problems that git-p4 might not solve for you. Since nobody has volunteered to implement the features you describe yet, I believe that most of us git-p4 users have fairly simple client spec setups. For me, most projects in p4 are such that I can give one root directory to "git p4 sync", and it works for me. I of course have several git projects that sync from the same p4 server (only with different root dirs). In cases where you have dependencies between such projects, you should maybe read about git submodules - or maybe googles "repo" script (search for "google repo git"). I don't know much about any of these, other than 'they exist, and seemingly try to solve such issues' :-/ > i would propose to use both command-line arguments and a client spec > to create a correct filter of what should be synced/cloned. > BTW, it looks this script does not honor neither the order of paths > in the spec (which can be important) nor mapping of the files to a local tree. When you have a client spec like: //depot/A/... -//depot/A/B/... //depot/A/B/C/... ... git-p4 sorts these paths by length. For a given filename, it finds the longest path that matches that files directory, and if that path starts with a '-', the file is not synced (for a file "//depot/A/B/myfile.c" it gets a match on "-//depot/A/B/...", and myfile.c is not synced, but the file "//depot/A/B/C/myotherfile.c" it matches "//depot/A/B/C/...") Do you have an example that shows how it might fail? And no, git-p4 does not care about the local mappings, it reads only the server part. -Tor Arvid- >> If you want to fix it, you might want to rename clientSpecDirs to >> clientSpecEntries or something like that. > > For now, I just commented out two lines in the run() procedure: > #if not p.endswith("/"): > # p += "/" > >> Btw... Am I understanding correctly what it is you wish to accomplish? >> I'm guessing that you have a perforce server with a client spec set >> up, and you want to sync everything on the entire server according to >> that client spec? > > yes. Client spec completely defines the project layout for me. > It contains paths to some components that are mapped to the > client working tree. > Just if your CS contain > > //depot/path/to/projectX/... //CLIENT/... > > > > -- > To unsubscribe from this list: send the line "unsubscribe git" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: P4 Sync problem 2009-11-11 13:54 ` Tor Arvid Lund @ 2009-11-11 14:57 ` Dmitry Smirnov 2010-07-22 18:21 ` masonk 0 siblings, 1 reply; 9+ messages in thread From: Dmitry Smirnov @ 2009-11-11 14:57 UTC (permalink / raw) To: git Tor Arvid Lund <torarvid <at> gmail.com> writes: > //depot/A/... > -//depot/A/B/... > //depot/A/B/C/... > > ... git-p4 sorts these paths by length. For a given filename, it finds > the longest path that matches that files directory, and if that path > starts with a '-', the file is not synced (for a file > "//depot/A/B/myfile.c" it gets a match on "-//depot/A/B/...", and > myfile.c is not synced, but the file "//depot/A/B/C/myotherfile.c" it > matches "//depot/A/B/C/...") > > Do you have an example that shows how it might fail? According to the P4 User's Guide (http://www.perforce.com/perforce/doc.091/manuals/p4guide/02_config.html#1066090) Perforce prefer later mapping if there is a conflict. So, if you switch paths: -//depot/A/B/... //depot/A/... perforce will sync all the the files. Of course, this is not a very useful case. I suppose the order is not important until mapping are implemented... ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: P4 Sync problem 2009-11-11 14:57 ` Dmitry Smirnov @ 2010-07-22 18:21 ` masonk 0 siblings, 0 replies; 9+ messages in thread From: masonk @ 2010-07-22 18:21 UTC (permalink / raw) To: git Hi, I know this is an old thread, but I think it might be relevant. (At any rate, at least you know I've been looking). I'm trying to use git-p4 with a very large P4 repository, of which my client view is a small fraction. My client view is within the administrator-set file limit of P4 files. E.G., p4 sync //depot/... works. When I call git-p4 sync or clone, however, it bumps into the limit. Even if I am using client spec and detecting branches. If p4 were successfully detecting my branches -or- using my client spec, I would not be running into the limit. But: git p4 sync //depot@all --use-client-spec --detect-branches --verbose Syncing with origin first by calling git fetch origin executing git fetch origin Reading pipe: git config git-p4.user Reading pipe: git config git-p4.password Reading pipe: git config git-p4.port Reading pipe: git config git-p4.host Reading pipe: git config git-p4.client p4 -u mkramer -c mkramer -G client -o Opening pipe: p4 -u mkramer -c mkramer -G client -o Reading pipe: git rev-parse --symbolic --remotes Reading pipe: git rev-parse p4/master p4-git branches: [] initial parents: {} Getting p4 changes for //depot/... p4 -u mkramer -c mkramer changes //depot/... Reading pipe: p4 -u mkramer -c mkramer changes //depot/... Request too large (over 110000); see 'p4 help maxresults'. Traceback (most recent call last): File "/home/mkramer/git/bin/git-p4", line 1924, in <module> main() File "/home/mkramer/git/bin/git-p4", line 1919, in main if not cmd.run(args): File "/home/mkramer/git/bin/git-p4", line 1671, in run changes = p4ChangesForPaths(self.depotPaths, self.changeRange) File "/home/mkramer/git/bin/git-p4", line 444, in p4ChangesForPaths for p in depotPaths])) File "/home/mkramer/git/bin/git-p4", line 108, in p4_read_pipe_lines return read_pipe_lines(real_cmd) File "/home/mkramer/git/bin/git-p4", line 101, in read_pipe_lines die('Command failed: %s' % c) File "/home/mkramer/git/bin/git-p4", line 59, in die raise Exception(msg) Exception: Command failed: p4 -u mkramer -c mkramer changes //depot/... Is this a limitation in the current --use-client-spec or --detect-branches flags, or am I doing it wrong? -- View this message in context: http://git.661346.n2.nabble.com/P4-Sync-problem-tp3979793p5326585.html Sent from the git mailing list archive at Nabble.com. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: P4 Sync problem 2009-11-11 12:39 ` Dmitry Smirnov 2009-11-11 13:54 ` Tor Arvid Lund @ 2009-11-15 13:00 ` Pete Wyckoff 1 sibling, 0 replies; 9+ messages in thread From: Pete Wyckoff @ 2009-11-15 13:00 UTC (permalink / raw) To: Dmitry Smirnov; +Cc: git divis1969@gmail.com wrote on Wed, 11 Nov 2009 12:39 +0000: > i would propose to use both command-line arguments and a client spec > to create a correct filter of what should be synced/cloned. > BTW, it looks this script does not honor neither the order of paths > in the spec (which can be important) nor mapping of the files to a local tree. Here's a hack that I've been using to at least read the repo locations out of the client spec. In the useclientspec case, it takes all the info on paths from an existing p4 client spec. No command line argument to git p4 sync. Hack out the test for P4ENV; that is site specific for me. We've moved away from using client specs with more than 1 line, so I'm not interested in this patch anymore. Also, the long term solution will probably be based on the foreign remote work that Daniel and others are doing, so don't invest too much time in fixing this up. That said, if there is a clean way to support both your client specs and how Tor and others use them, it is worth putting in now. Good luck. -- Pete >From 55e8f6323894031119c755f2c3b3214c1c74b824 Mon Sep 17 00:00:00 2001 From: Pete Wyckoff <pw@padd.com> Date: Wed, 26 Nov 2008 12:28:09 -0500 Subject: [PATCH] honor git client spec Destination directories for parts of the depot are specified in the client spec. Use them as given. Also read the entire client spec to figure out what to do. --- contrib/fast-import/git-p4 | 108 +++++++++++++++++++++++++++++++++++--------- 1 files changed, 86 insertions(+), 22 deletions(-) diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4 index 1cecae2..28fa95f 100755 --- a/contrib/fast-import/git-p4 +++ b/contrib/fast-import/git-p4 @@ -456,6 +456,26 @@ def p4ChangesForPaths(depotPaths, changeRange): changelist.sort() return changelist +# +# Sort by number of slashes first: more specific at the top. Then +# sort by alpha within a given number of path components. +# +def clientSortFunc(a, b): + asrc = a[0] + bsrc = b[0] + asrclen = asrc.count("/") + bsrclen = bsrc.count("/") + if asrclen > bsrclen: + return -1 + elif asrclen < bsrclen: + return 1 + elif asrc > bsrc: + return 1 + elif asrc < bsrc: + return -1 + else: + return 0 + class Command: def __init__(self): self.usage = "usage: %prog [options]" @@ -915,6 +935,11 @@ class P4Sync(Command): return files def stripRepoPath(self, path, prefixes): + if self.clientSpecDirs: + for val in self.clientSpecDirs: + if path.startswith(val[0]): + return val[1] + path[len(val[0]):] + if self.keepRepoPath: prefixes = [re.sub("^(//[^/]+/).*", r'\1', prefixes[0])] @@ -1038,7 +1063,7 @@ class P4Sync(Command): includeFile = True for val in self.clientSpecDirs: if f['path'].startswith(val[0]): - if val[1] <= 0: + if val[1] == '-': includeFile = False break @@ -1115,6 +1140,7 @@ class P4Sync(Command): self.gitStream.write("from %s\n" % parent) self.streamP4Files(new_files) + self.gitStream.write("\n") change = int(details["change"]) @@ -1476,24 +1502,54 @@ class P4Sync(Command): def getClientSpec(self): - specList = p4CmdList( "client -o" ) + specList = p4CmdList("client -o") temp = {} + client = "" + for entry in specList: + for k,v in entry.iteritems(): + if k.startswith("Client"): + client = v + print "client is", client + if not client: + sys.stderr.write("no client found\n") + sys.exit(1) + client = "//" + client + "/" for entry in specList: for k,v in entry.iteritems(): if k.startswith("View"): - if v.startswith('"'): - start = 1 - else: - start = 0 - index = v.find("...") - v = v[start:index] - if v.startswith("-"): - v = v[1:] - temp[v] = -len(v) - else: - temp[v] = len(v) - self.clientSpecDirs = temp.items() - self.clientSpecDirs.sort( lambda x, y: abs( y[1] ) - abs( x[1] ) ) + if v.startswith('"'): + v = v[1:] + if v.endswith('"'): + v = v[:-1] + d = v.split(" "); + if len(d) != 2: + sys.stderr.write( \ + "expecting two fields in view, got: %s\n" % v) + sys.exit(1) + if not d[0].endswith("..."): + sys.stderr.write(\ + "expecting trailing ..., got: %s\n" % d[0]) + sys.exit(1) + d[0] = d[0][:-3] + if not d[1].endswith("..."): + sys.stderr.write(\ + "expecting trailing ..., got: %s\n" % d[1]) + sys.exit(1) + d[1] = d[1][:-3] + if not d[1].startswith(client): + sys.stderr.write(\ + "expecting dest to start with %s, got: %s\n" % \ + (client, d[1])) + sys.exit(1) + d[1] = d[1][len(client):] + # negated items do not appear in tree + if d[0].startswith("-"): + d[0] = d[0][1:] + d[1] = "" + temp[d[0]] = d[1] + + self.clientSpecDirs = temp.items() + self.clientSpecDirs.sort(clientSortFunc) def run(self, args): self.depotPaths = [] @@ -1755,7 +1811,7 @@ class P4Clone(P4Sync): def __init__(self): P4Sync.__init__(self) self.description = "Creates a new git repository and imports from Perforce into it" - self.usage = "usage: %prog [options] //depot/path[@revRange]" + self.usage = "usage: %prog [options] [//depot/path[@revRange]]" self.options += [ optparse.make_option("--destination", dest="cloneDestination", action='store', default=None, @@ -1783,18 +1839,26 @@ class P4Clone(P4Sync): return os.path.split(depotDir)[1] def run(self, args): - if len(args) < 1: - return False - if self.keepRepoPath and not self.cloneDestination: sys.stderr.write("Must specify destination for --keep-path\n") sys.exit(1) depotPaths = args - if not self.cloneDestination and len(depotPaths) > 1: - self.cloneDestination = depotPaths[-1] - depotPaths = depotPaths[:-1] + if gitConfig("git-p4.useclientspec") == "true": + if not os.path.exists("P4ENV"): + sys.stderr.write("Must copy P4ENV file from a valid client\n") + sys.exit(1) + self.getClientSpec() + if not depotPaths: + depotPaths = [p[0] for p in self.clientSpecDirs] + else: + if not depotPaths: + sys.stderr.write("Must specify depot path if no client spec\n") + sys.exit(1) + + if not self.cloneDestination: + self.cloneDestination = "." self.cloneExclude = ["/"+p for p in self.cloneExclude] for p in depotPaths: -- 1.6.2.5 ^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2010-07-22 18:22 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-11-10 13:56 P4 Sync problem Dmitry Smirnov 2009-11-11 8:43 ` Tor Arvid Lund 2009-11-11 9:43 ` Dmitry Smirnov 2009-11-11 12:00 ` Tor Arvid Lund 2009-11-11 12:39 ` Dmitry Smirnov 2009-11-11 13:54 ` Tor Arvid Lund 2009-11-11 14:57 ` Dmitry Smirnov 2010-07-22 18:21 ` masonk 2009-11-15 13:00 ` Pete Wyckoff
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).