1#' Git Remotes
2#'
3#' List, add, configure, or remove remotes.
4#'
5#' @export
6#' @rdname git_remote
7#' @name git_remote
8#' @family git
9#' @inheritParams git_open
10#' @param remote name of an existing remote. Default `NULL` means the remote
11#' from the upstream of the current branch.
12#' @param url server url (https or ssh)
13#' @useDynLib gert R_git_remote_list
14git_remote_list <- function(repo = '.'){
15  repo <- git_open(repo)
16  .Call(R_git_remote_list, repo)
17}
18
19#' @export
20#' @rdname git_remote
21#' @param name unique name for the new remote
22#' @param refspec optional string with the remote fetch value
23#' @useDynLib gert R_git_remote_add
24git_remote_add <- function(url, name = "origin", refspec = NULL, repo = '.'){
25  repo <- git_open(repo)
26  name <- as.character(name)
27  url <- as.character(url)
28  refspec <- as.character(refspec)
29  invisible(.Call(R_git_remote_add, repo, name, url, refspec))
30}
31
32#' @export
33#' @rdname git_remote
34#' @useDynLib gert R_git_remote_remove
35git_remote_remove <- function(remote, repo = '.'){
36  repo <- git_open(repo)
37  remote <- as.character(remote)
38  .Call(R_git_remote_remove, repo, remote)
39  invisible()
40}
41
42#' @export
43#' @rdname git_remote
44#' @useDynLib gert R_git_remote_info
45git_remote_info <- function(remote = NULL, repo = '.'){
46  repo <- git_open(repo)
47  remote <- as.character(remote)
48  if(!length(remote))
49    remote <- git_info(repo = repo)$remote
50  .Call(R_git_remote_info, repo, remote)
51}
52
53#' @export
54#' @rdname git_remote
55#' @useDynLib gert R_git_remote_set_url
56git_remote_set_url <- function(url, remote = NULL, repo = '.'){
57  repo <- git_open(repo)
58  name <- as.character(remote)
59  if(!length(remote))
60    remote <- git_info(repo = repo)$remote
61  url <- as.character(url)
62  .Call(R_git_remote_set_url, repo, remote, url)
63  invisible()
64}
65
66#' @export
67#' @rdname git_remote
68#' @useDynLib gert R_git_remote_set_pushurl
69git_remote_set_pushurl <- function(url, remote = NULL , repo = '.'){
70  repo <- git_open(repo)
71  remote <- as.character(remote)
72  if(!length(remote))
73    remote <- git_info(repo = repo)$remote
74  url <- as.character(url)
75  .Call(R_git_remote_set_pushurl, repo, remote, url)
76  invisible()
77}
78
79#' @export
80#' @rdname git_remote
81#' @useDynLib gert R_git_remote_refspecs
82git_remote_refspecs <- function(remote = NULL, repo = '.'){
83  repo <- git_open(repo)
84  remote <- as.character(remote)
85  if(!length(remote))
86    remote <- git_info(repo = repo)$remote
87  .Call(R_git_remote_refspecs, repo, remote)
88}
89
90#' @useDynLib gert R_git_remote_add_fetch
91git_remote_add_fetch <- function(refspec, remote = NULL, repo = '.'){
92  repo <- git_open(repo)
93  remote <- as.character(remote)
94  if(!length(remote))
95    remote <- git_info(repo = repo)$remote
96  refspec <- as.character(refspec)
97  .Call(R_git_remote_add_fetch, repo, remote, refspec)
98}
99