summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 5a38b18)
raw | patch | inline | side by side (parent: 5a38b18)
author | Jonathan Nieder <jrnieder@gmail.com> | |
Fri, 10 Dec 2010 06:53:54 +0000 (00:53 -0600) | ||
committer | Jonathan Nieder <jrnieder@gmail.com> | |
Mon, 7 Mar 2011 06:56:50 +0000 (00:56 -0600) |
Restrict the repo_tree API to functions that are actually needed.
- decouple reading the mode and content of dirents from other
operations.
- remove repo_modify_path. It is only used to read the mode from
dirents.
- remove the ability to use repo_read_mode on a missing path. The
existing code only errors out in that case, anyway.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
- decouple reading the mode and content of dirents from other
operations.
- remove repo_modify_path. It is only used to read the mode from
dirents.
- remove the ability to use repo_read_mode on a missing path. The
existing code only errors out in that case, anyway.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
vcs-svn/repo_tree.c | patch | blob | history | |
vcs-svn/repo_tree.h | patch | blob | history | |
vcs-svn/svndump.c | patch | blob | history |
diff --git a/vcs-svn/repo_tree.c b/vcs-svn/repo_tree.c
index 8763de5c29f45105b6a32a39e0d0da918a2cf4f0..14bcc192b6db76962c1238cb179c46ac927a4938 100644 (file)
--- a/vcs-svn/repo_tree.c
+++ b/vcs-svn/repo_tree.c
return dent;
}
-static void repo_write_dirent(uint32_t *path, uint32_t mode,
+static void repo_write_dirent(const uint32_t *path, uint32_t mode,
uint32_t content_offset, uint32_t del)
{
uint32_t name, revision, dir_o = ~0, parent_dir_o = ~0;
return content_offset;
}
-uint32_t repo_copy(uint32_t revision, uint32_t *src, uint32_t *dst)
+uint32_t repo_read_mode(const uint32_t *path)
+{
+ struct repo_dirent *dent = repo_read_dirent(active_commit, path);
+ if (dent == NULL)
+ die("invalid dump: path to be modified is missing");
+ return dent->mode;
+}
+
+void repo_copy(uint32_t revision, const uint32_t *src, const uint32_t *dst)
{
uint32_t mode = 0, content_offset = 0;
struct repo_dirent *src_dent;
content_offset = src_dent->content_offset;
repo_write_dirent(dst, mode, content_offset, 0);
}
- return mode;
}
void repo_add(uint32_t *path, uint32_t mode, uint32_t blob_mark)
repo_write_dirent(path, mode, blob_mark, 0);
}
-uint32_t repo_modify_path(uint32_t *path, uint32_t mode, uint32_t blob_mark)
-{
- struct repo_dirent *src_dent;
- src_dent = repo_read_dirent(active_commit, path);
- if (!src_dent)
- return 0;
- if (!blob_mark)
- blob_mark = src_dent->content_offset;
- if (!mode)
- mode = src_dent->mode;
- repo_write_dirent(path, mode, blob_mark, 0);
- return mode;
-}
-
void repo_delete(uint32_t *path)
{
repo_write_dirent(path, 0, 0, 1);
diff --git a/vcs-svn/repo_tree.h b/vcs-svn/repo_tree.h
index 3202bbeffeefa4b809422fd2ab8c36fc85838a20..11d48c2444a0bfad1fad1c18ea9f8a310ed2e0a7 100644 (file)
--- a/vcs-svn/repo_tree.h
+++ b/vcs-svn/repo_tree.h
#define REPO_MAX_PATH_DEPTH 1000
uint32_t next_blob_mark(void);
-uint32_t repo_copy(uint32_t revision, uint32_t *src, uint32_t *dst);
+void repo_copy(uint32_t revision, const uint32_t *src, const uint32_t *dst);
void repo_add(uint32_t *path, uint32_t mode, uint32_t blob_mark);
-uint32_t repo_modify_path(uint32_t *path, uint32_t mode, uint32_t blob_mark);
uint32_t repo_read_path(const uint32_t *path);
+uint32_t repo_read_mode(const uint32_t *path);
void repo_delete(uint32_t *path);
void repo_commit(uint32_t revision, uint32_t author, char *log, uint32_t uuid,
uint32_t url, long unsigned timestamp);
diff --git a/vcs-svn/svndump.c b/vcs-svn/svndump.c
index f07376f964d7a5b65cc1f5b2f4c8164bd5f2ab79..e6d84bada579c26cdb776569fa520103fe7d9dd2 100644 (file)
--- a/vcs-svn/svndump.c
+++ b/vcs-svn/svndump.c
uint32_t mode;
if (!have_text)
mark = repo_read_path(node_ctx.dst);
- mode = repo_modify_path(node_ctx.dst, 0, 0);
- if (!mode)
- die("invalid dump: path to be modified is missing");
+ mode = repo_read_mode(node_ctx.dst);
if (mode == REPO_MODE_DIR && type != REPO_MODE_DIR)
die("invalid dump: cannot modify a directory into a file");
if (mode != REPO_MODE_DIR && type == REPO_MODE_DIR)