mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Stop using the "git descriptor file" model
Instead, just encode the git repository information in the filename. We want to make it much harder to make it match a real filename, but to still allow easy browsing with the file manager interface. So the git repository "filename" format is the path to the git repository directory, with the branch name encoded as "[branch]" at the end rather than the "path:branch" format that we used in the descriptor file. [ For example, on Windows, a filename like "c:\my.xml" could be interpreted as the branchame "\my.xml" in the repository in the directory "c" ] In particular, with this model, no filename that ends with ".xml" could possibly ever be considered a git repository name, since the last character of a git pathname is always ']'. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
5b3dab719e
commit
7902af246c
5 changed files with 76 additions and 87 deletions
10
file.c
10
file.c
|
@ -356,19 +356,21 @@ static void parse_file_buffer(const char *filename, struct memblock *mem, char *
|
|||
|
||||
if (!mem->size || !mem->buffer)
|
||||
return;
|
||||
if (mem->size > 3 && !memcmp(mem->buffer, "git", 3)) {
|
||||
git_load_dives(mem->buffer);
|
||||
return;
|
||||
}
|
||||
|
||||
parse_xml_buffer(filename, mem->buffer, mem->size, &dive_table, NULL, error);
|
||||
}
|
||||
|
||||
void parse_file(const char *filename, char **error)
|
||||
{
|
||||
struct git_repository *git;
|
||||
const char *branch;
|
||||
struct memblock mem;
|
||||
char *fmt;
|
||||
|
||||
git = is_git_repository(filename, &branch);
|
||||
if (git && !git_load_dives(git, branch))
|
||||
return;
|
||||
|
||||
if (readfile(filename, &mem) < 0) {
|
||||
/* we don't want to display an error if this was the default file */
|
||||
if (prefs.default_filename && !strcmp(filename, prefs.default_filename))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue