mirror of
https://gitlab.gnome.org/GNOME/gitg
synced 2024-10-03 22:54:15 +00:00
Added command argument passing to repository loading
Trailing command line arguments are now passed to the repository loader (appended to git log) so `gitg . --all` should work for example
This commit is contained in:
parent
eeb076a145
commit
84e9d5b9b7
|
@ -671,7 +671,7 @@ gitg_repository_get_loader(GitgRepository *self)
|
|||
}
|
||||
|
||||
gboolean
|
||||
gitg_repository_load(GitgRepository *self, GError **error)
|
||||
gitg_repository_load(GitgRepository *self, int argc, gchar **av, GError **error)
|
||||
{
|
||||
g_return_val_if_fail(GITG_IS_REPOSITORY(self), FALSE);
|
||||
|
||||
|
@ -686,20 +686,23 @@ gitg_repository_load(GitgRepository *self, GError **error)
|
|||
gitg_runner_cancel(self->priv->loader);
|
||||
gitg_repository_clear(self);
|
||||
|
||||
gchar *argv[] = {
|
||||
"git",
|
||||
"--git-dir",
|
||||
gitg_utils_dot_git_path(self->priv->path),
|
||||
"log",
|
||||
"--encoding=UTF-8",
|
||||
"--topo-order",
|
||||
"--pretty=format:%H\01%an\01%s\01%P\01%at",
|
||||
"HEAD",
|
||||
NULL
|
||||
};
|
||||
gchar *dotgit = gitg_utils_dot_git_path(self->priv->path);
|
||||
gchar **argv = g_new0(gchar *, 7 + (argc ? argc - 1 : 0));
|
||||
argv[0] = "git";
|
||||
argv[1] = "--git-dir";
|
||||
argv[2] = dotgit;
|
||||
argv[3] = "log";
|
||||
argv[4] = "--pretty=format:%H\01%an\01%s\01%P\01%at";
|
||||
|
||||
if (!argc)
|
||||
argv[5] = "HEAD";
|
||||
|
||||
int i;
|
||||
for (i = 0; i < argc; ++i)
|
||||
argv[5 + i] = av[i];
|
||||
|
||||
gboolean ret = gitg_runner_run(self->priv->loader, argv, error);
|
||||
g_free(argv[2]);
|
||||
g_free(dotgit);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ GitgRepository *gitg_repository_new(gchar const *path);
|
|||
gchar const *gitg_repository_get_path(GitgRepository *repository);
|
||||
GitgRunner *gitg_repository_get_loader(GitgRepository *repository);
|
||||
|
||||
gboolean gitg_repository_load(GitgRepository *repository, GError **error);
|
||||
gboolean gitg_repository_load(GitgRepository *repository, int argc, gchar **argv, GError **error);
|
||||
|
||||
void gitg_repository_add(GitgRepository *repository, GitgRevision *revision, GtkTreeIter *iter);
|
||||
void gitg_repository_clear(GitgRepository *repository);
|
||||
|
|
|
@ -324,7 +324,7 @@ handle_no_gitdir(GitgWindow *window)
|
|||
}
|
||||
|
||||
void
|
||||
gitg_window_load_repository(GitgWindow *window, gchar const *path)
|
||||
gitg_window_load_repository(GitgWindow *window, gchar const *path, gint argc, gchar **argv)
|
||||
{
|
||||
g_return_if_fail(GITG_IS_WINDOW(window));
|
||||
|
||||
|
@ -347,7 +347,7 @@ gitg_window_load_repository(GitgWindow *window, gchar const *path)
|
|||
|
||||
g_object_unref(loader);
|
||||
|
||||
gitg_repository_load(window->priv->repository, NULL);
|
||||
gitg_repository_load(window->priv->repository, argc, argv, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -29,7 +29,7 @@ struct _GitgWindowClass {
|
|||
|
||||
GType gitg_window_get_type (void) G_GNUC_CONST;
|
||||
|
||||
void gitg_window_load_repository(GitgWindow *window, gchar const *path);
|
||||
void gitg_window_load_repository(GitgWindow *window, gchar const *path, gint argc, gchar **argv);
|
||||
|
||||
|
||||
G_END_DECLS
|
||||
|
|
|
@ -20,6 +20,9 @@ parse_options(int *argc, char ***argv)
|
|||
GOptionContext *context;
|
||||
|
||||
context = g_option_context_new(_("- git repository viewer"));
|
||||
|
||||
// Ignore unknown options so we can pass them to git
|
||||
g_option_context_set_ignore_unknown_options(context, TRUE);
|
||||
g_option_context_add_main_entries(context, entries, GETTEXT_PACKAGE);
|
||||
g_option_context_add_group(context, gtk_get_option_group (TRUE));
|
||||
|
||||
|
@ -78,7 +81,7 @@ main(int argc, char **argv)
|
|||
GitgWindow *window = build_ui();
|
||||
|
||||
gchar *gitdir = argc > 1 ? g_strdup(argv[1]) : g_get_current_dir();
|
||||
gitg_window_load_repository(window, gitdir);
|
||||
gitg_window_load_repository(window, gitdir, argc - 2, &argv[2]);
|
||||
g_free(gitdir);
|
||||
|
||||
gtk_main();
|
||||
|
|
Loading…
Reference in a new issue