Should be almost exactly equivalent now, and both should function properly.

This commit is contained in:
Chris Lee
2007-01-14 07:05:30 -08:00
committed by Chris Lee
parent 5d26e4f820
commit ca36862bb7
2 changed files with 19 additions and 30 deletions

View File

@@ -44,20 +44,18 @@ time_t get_epoch(char *svn_date)
int dump_blob(svn_fs_root_t *root, char *full_path, apr_pool_t *pool) int dump_blob(svn_fs_root_t *root, char *full_path, apr_pool_t *pool)
{ {
svn_filesize_t stream_length; svn_filesize_t stream_length;
svn_stream_t *stream; svn_stream_t *stream, *outstream;
apr_size_t len; apr_size_t len;
char buf[8]; char buf[8];
SVN_ERR(svn_fs_file_length(&stream_length, root, full_path, pool)); SVN_ERR(svn_fs_file_length(&stream_length, root, full_path, pool));
SVN_ERR(svn_fs_file_contents(&stream, root, full_path, pool)); SVN_ERR(svn_fs_file_contents(&stream, root, full_path, pool));
fprintf(stdout, "data %li\n", stream_length); fprintf(stdout, "data %lu\n", stream_length);
fflush(stdout);
do { SVN_ERR(svn_stream_for_stdout(&outstream, pool));
len = sizeof(buf); SVN_ERR(svn_stream_copy(stream, outstream, pool));
SVN_ERR(svn_stream_read(stream, buf, &len));
fprintf (stdout, "%s\0", buf);
} while (len);
fprintf(stdout, "\n"); fprintf(stdout, "\n");
@@ -81,7 +79,7 @@ int export_revision(svn_revnum_t rev, svn_repos_t *repo, svn_fs_t *fs, apr_pool_
const void *key; const void *key;
void *val; void *val;
fprintf(stderr, "Exporting revision %li... ", rev); fprintf(stderr, "Exporting revision %ld... ", rev);
SVN_ERR(svn_fs_revision_root(&root_obj, fs, rev, pool)); SVN_ERR(svn_fs_revision_root(&root_obj, fs, rev, pool));
SVN_ERR(svn_fs_paths_changed(&changes, root_obj, pool)); SVN_ERR(svn_fs_paths_changed(&changes, root_obj, pool));
@@ -108,7 +106,7 @@ int export_revision(svn_revnum_t rev, svn_repos_t *repo, svn_fs_t *fs, apr_pool_
} else { } else {
*(char **)apr_array_push(file_changes) = (char *)svn_string_createf(pool, "M 644 :%u %s", mark, path + strlen(TRUNK))->data; *(char **)apr_array_push(file_changes) = (char *)svn_string_createf(pool, "M 644 :%u %s", mark, path + strlen(TRUNK))->data;
fprintf(stdout, "blob\nmark :%u\n", mark++); fprintf(stdout, "blob\nmark :%u\n", mark++);
// dump_blob(root_obj, (char *)path, revpool); dump_blob(root_obj, (char *)path, revpool);
} }
} }

View File

@@ -19,29 +19,19 @@ import gc, sys, os.path
from optparse import OptionParser from optparse import OptionParser
from time import sleep, mktime, localtime, strftime, strptime from time import sleep, mktime, localtime, strftime, strptime
from svn.fs import svn_fs_dir_entries, svn_fs_file_length, svn_fs_file_contents, svn_fs_is_dir, svn_fs_revision_root, svn_fs_youngest_rev, svn_fs_revision_proplist, svn_fs_revision_prop, svn_fs_paths_changed from svn.fs import svn_fs_dir_entries, svn_fs_file_length, svn_fs_file_contents, svn_fs_is_dir, svn_fs_revision_root, svn_fs_youngest_rev, svn_fs_revision_proplist, svn_fs_revision_prop, svn_fs_paths_changed
from svn.core import svn_pool_create, svn_pool_clear, svn_pool_destroy, svn_stream_read, svn_stream_close, run_app from svn.core import svn_pool_create, svn_pool_clear, svn_pool_destroy, svn_stream_read, svn_stream_for_stdout, svn_stream_copy, svn_stream_close, run_app
from svn.repos import svn_repos_open, svn_repos_fs from svn.repos import svn_repos_open, svn_repos_fs
ct_short = ['M', 'A', 'D', 'R', 'X'] ct_short = ['M', 'A', 'D', 'R', 'X']
def dump_file_blob(root, full_path, pool): def dump_file_blob(root, full_path, pool):
# Use an iteration subpool. stream_length = svn_fs_file_length(root, full_path, pool)
subpool = svn_pool_create(pool) stream = svn_fs_file_contents(root, full_path, pool)
# Clear the iteration subpool.
svn_pool_clear(subpool)
# print full_path
stream_length = svn_fs_file_length(root, full_path, subpool)
stream = svn_fs_file_contents(root, full_path, subpool)
contents = svn_stream_read(stream, int(stream_length))
sys.stdout.write("data %s\n" % stream_length) sys.stdout.write("data %s\n" % stream_length)
sys.stdout.write(contents) ostream = svn_stream_for_stdout(pool)
svn_stream_copy(stream, ostream, pool)
sys.stdout.write("\n") sys.stdout.write("\n")
# Destroy the iteration subpool.
svn_pool_destroy(subpool)
def export_revision(rev, repo, fs, pool): def export_revision(rev, repo, fs, pool):
sys.stderr.write("Exporting revision %s... " % rev) sys.stderr.write("Exporting revision %s... " % rev)
@@ -71,10 +61,10 @@ def export_revision(rev, repo, fs, pool):
if c_t == 'D': if c_t == 'D':
file_changes.append("D %s" % path.replace(trunk_path, '')) file_changes.append("D %s" % path.replace(trunk_path, ''))
else: else:
sys.stdout.write("blob\nmark :%s\n" % i)
marks[i] = path.replace(trunk_path, '') marks[i] = path.replace(trunk_path, '')
# dump_file_blob(root_obj, path, revpool)
file_changes.append("M 644 :%s %s" % (i, marks[i])) file_changes.append("M 644 :%s %s" % (i, marks[i]))
sys.stdout.write("blob\nmark :%s\n" % i)
dump_file_blob(root, path, revpool)
i += 1 i += 1
# Get the commit author and message # Get the commit author and message
@@ -94,14 +84,15 @@ def export_revision(rev, repo, fs, pool):
svndate = props['svn:date'][0:-8] svndate = props['svn:date'][0:-8]
commit_time = mktime(strptime(svndate, '%Y-%m-%dT%H:%M:%S')) commit_time = mktime(strptime(svndate, '%Y-%m-%dT%H:%M:%S'))
sys.stdout.write("commit refs/heads/master\n") sys.stdout.write("commit refs/heads/master\n")
#sys.stdout.write("committer %s %s -0000\n" % (author, int(commit_time))) sys.stdout.write("committer %s %s -0000\n" % (author, int(commit_time)))
#sys.stdout.write("data %s\n" % len(props['svn:log'])) sys.stdout.write("data %s\n" % len(props['svn:log']))
#sys.stdout.write(props['svn:log']) sys.stdout.write(props['svn:log'])
#sys.stdout.write("\n") sys.stdout.write("\n")
sys.stdout.write('\n'.join(file_changes)) sys.stdout.write('\n'.join(file_changes))
sys.stdout.write("\n\n") sys.stdout.write("\n\n")
svn_pool_destroy(revpool) svn_pool_destroy(revpool)
sys.stderr.write("done!\n") sys.stderr.write("done!\n")
#if rev % 1000 == 0: #if rev % 1000 == 0: