Show More
@@ -5,7 +5,7 b'' | |||
|
5 | 5 | # This software may be used and distributed according to the terms |
|
6 | 6 | # of the GNU General Public License, incorporated herein by reference. |
|
7 | 7 | |
|
8 |
import sys, struct, sha, socket, os, time, |
|
|
8 | import sys, struct, sha, socket, os, time, re, urllib2 | |
|
9 | 9 | import urllib |
|
10 | 10 | from mercurial import byterange |
|
11 | 11 | from mercurial.transaction import * |
@@ -14,16 +14,7 b' from difflib import SequenceMatcher' | |||
|
14 | 14 | |
|
15 | 15 | class filelog(revlog): |
|
16 | 16 | def __init__(self, opener, path): |
|
17 | s = self.encodepath(path) | |
|
18 | revlog.__init__(self, opener, os.path.join("data", s + "i"), | |
|
19 | os.path.join("data", s)) | |
|
20 | ||
|
21 | def encodepath(self, path): | |
|
22 | s = sha.sha(path).digest() | |
|
23 | s = base64.encodestring(s)[:-3] | |
|
24 | s = re.sub("\+", "%", s) | |
|
25 | s = re.sub("/", "_", s) | |
|
26 | return s | |
|
17 | revlog.__init__(self, opener, path + ".i", path + ".d") | |
|
27 | 18 | |
|
28 | 19 | def read(self, node): |
|
29 | 20 | return self.revision(node) |
@@ -210,11 +201,17 b' def opener(base):' | |||
|
210 | 201 | |
|
211 | 202 | f = os.path.join(p, path) |
|
212 | 203 | |
|
213 |
if mode != "r" |
|
|
214 |
|
|
|
215 | if s.st_nlink > 1: | |
|
216 | file(f + ".tmp", "w").write(file(f).read()) | |
|
217 |
os.r |
|
|
204 | if mode != "r": | |
|
205 | try: | |
|
206 | s = os.stat(f) | |
|
207 | except OSError: | |
|
208 | d = os.path.dirname(f) | |
|
209 | if not os.path.isdir(d): | |
|
210 | os.makedirs(d) | |
|
211 | else: | |
|
212 | if s.st_nlink > 1: | |
|
213 | file(f + ".tmp", "w").write(file(f).read()) | |
|
214 | os.rename(f+".tmp", f) | |
|
218 | 215 | |
|
219 | 216 | return file(f, mode) |
|
220 | 217 |
General Comments 0
You need to be logged in to leave comments.
Login now