Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
git2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
git2
Commits
7b2b6da6
Commit
7b2b6da6
authored
Sep 01, 2013
by
Vicent Martí
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1822 from kadamski/examples-cleanup
Small cleanup in examples.
parents
ac2e7dc6
5c37f005
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
67 additions
and
66 deletions
+67
-66
CMakeLists.txt
+15
-0
examples/network/Makefile
+2
-1
examples/network/clone.c
+1
-32
examples/network/common.c
+34
-0
examples/network/common.h
+6
-0
examples/network/fetch.c
+1
-0
examples/network/ls-remote.c
+8
-33
No files found.
CMakeLists.txt
View file @
7b2b6da6
...
@@ -426,4 +426,19 @@ IF (BUILD_EXAMPLES)
...
@@ -426,4 +426,19 @@ IF (BUILD_EXAMPLES)
ADD_EXECUTABLE(git-rev-list examples/rev-list.c)
ADD_EXECUTABLE(git-rev-list examples/rev-list.c)
TARGET_LINK_LIBRARIES(git-rev-list git2)
TARGET_LINK_LIBRARIES(git-rev-list git2)
ADD_EXECUTABLE(git-rev-parse examples/rev-parse.c)
TARGET_LINK_LIBRARIES(git-rev-parse git2)
ADD_EXECUTABLE(git-log examples/log.c)
TARGET_LINK_LIBRARIES(git-log git2)
ADD_EXECUTABLE(git-status examples/status.c)
TARGET_LINK_LIBRARIES(git-status git2)
ADD_EXECUTABLE(git-init examples/init.c)
TARGET_LINK_LIBRARIES(git-init git2)
ADD_EXECUTABLE(git-cat-file examples/cat-file.c)
TARGET_LINK_LIBRARIES(git-cat-file git2)
ENDIF ()
ENDIF ()
examples/network/Makefile
View file @
7b2b6da6
...
@@ -11,7 +11,8 @@ OBJECTS = \
...
@@ -11,7 +11,8 @@ OBJECTS = \
ls-remote.o
\
ls-remote.o
\
fetch.o
\
fetch.o
\
clone.o
\
clone.o
\
index-pack.o
index-pack.o
\
common.o
all
:
$(OBJECTS)
all
:
$(OBJECTS)
$(CC)
$(CFLAGS)
$(LDFLAGS)
-o
git2
$(OBJECTS)
$(LIBRARIES)
$(CC)
$(CFLAGS)
$(LDFLAGS)
-o
git2
$(OBJECTS)
$(LIBRARIES)
...
...
examples/network/clone.c
View file @
7b2b6da6
...
@@ -9,19 +9,6 @@
...
@@ -9,19 +9,6 @@
# include <unistd.h>
# include <unistd.h>
#endif
#endif
/* Shamelessly borrowed from http://stackoverflow.com/questions/3417837/
* with permission of the original author, Martin Pool.
* http://sourcefrog.net/weblog/software/languages/C/unused.html
*/
#ifdef UNUSED
#elif defined(__GNUC__)
# define UNUSED(x) UNUSED_ ## x __attribute__((unused))
#elif defined(__LCLINT__)
# define UNUSED(x)
/*@unused@*/
x
#else
# define UNUSED(x) x
#endif
typedef
struct
progress_data
{
typedef
struct
progress_data
{
git_transfer_progress
fetch_progress
;
git_transfer_progress
fetch_progress
;
size_t
completed_steps
;
size_t
completed_steps
;
...
@@ -63,24 +50,6 @@ static void checkout_progress(const char *path, size_t cur, size_t tot, void *pa
...
@@ -63,24 +50,6 @@ static void checkout_progress(const char *path, size_t cur, size_t tot, void *pa
print_progress
(
pd
);
print_progress
(
pd
);
}
}
static
int
cred_acquire
(
git_cred
**
out
,
const
char
*
UNUSED
(
url
),
const
char
*
UNUSED
(
username_from_url
),
unsigned
int
UNUSED
(
allowed_types
),
void
*
UNUSED
(
payload
))
{
char
username
[
128
]
=
{
0
};
char
password
[
128
]
=
{
0
};
printf
(
"Username: "
);
scanf
(
"%s"
,
username
);
/* Yup. Right there on your terminal. Careful where you copy/paste output. */
printf
(
"Password: "
);
scanf
(
"%s"
,
password
);
return
git_cred_userpass_plaintext_new
(
out
,
username
,
password
);
}
int
do_clone
(
git_repository
*
repo
,
int
argc
,
char
**
argv
)
int
do_clone
(
git_repository
*
repo
,
int
argc
,
char
**
argv
)
{
{
...
@@ -107,7 +76,7 @@ int do_clone(git_repository *repo, int argc, char **argv)
...
@@ -107,7 +76,7 @@ int do_clone(git_repository *repo, int argc, char **argv)
clone_opts
.
checkout_opts
=
checkout_opts
;
clone_opts
.
checkout_opts
=
checkout_opts
;
clone_opts
.
fetch_progress_cb
=
&
fetch_progress
;
clone_opts
.
fetch_progress_cb
=
&
fetch_progress
;
clone_opts
.
fetch_progress_payload
=
&
pd
;
clone_opts
.
fetch_progress_payload
=
&
pd
;
clone_opts
.
cred_acquire_cb
=
cred_acquire
;
clone_opts
.
cred_acquire_cb
=
cred_acquire
_cb
;
// Do the clone
// Do the clone
error
=
git_clone
(
&
cloned_repo
,
url
,
path
,
&
clone_opts
);
error
=
git_clone
(
&
cloned_repo
,
url
,
path
,
&
clone_opts
);
...
...
examples/network/common.c
0 → 100644
View file @
7b2b6da6
#include "common.h"
#include <stdio.h>
/* Shamelessly borrowed from http://stackoverflow.com/questions/3417837/
* with permission of the original author, Martin Pool.
* http://sourcefrog.net/weblog/software/languages/C/unused.html
*/
#ifdef UNUSED
#elif defined(__GNUC__)
# define UNUSED(x) UNUSED_ ## x __attribute__((unused))
#elif defined(__LCLINT__)
# define UNUSED(x)
/*@unused@*/
x
#else
# define UNUSED(x) x
#endif
int
cred_acquire_cb
(
git_cred
**
out
,
const
char
*
UNUSED
(
url
),
const
char
*
UNUSED
(
username_from_url
),
unsigned
int
UNUSED
(
allowed_types
),
void
*
UNUSED
(
payload
))
{
char
username
[
128
]
=
{
0
};
char
password
[
128
]
=
{
0
};
printf
(
"Username: "
);
scanf
(
"%s"
,
username
);
/* Yup. Right there on your terminal. Careful where you copy/paste output. */
printf
(
"Password: "
);
scanf
(
"%s"
,
password
);
return
git_cred_userpass_plaintext_new
(
out
,
username
,
password
);
}
examples/network/common.h
View file @
7b2b6da6
...
@@ -12,6 +12,12 @@ int fetch(git_repository *repo, int argc, char **argv);
...
@@ -12,6 +12,12 @@ int fetch(git_repository *repo, int argc, char **argv);
int
index_pack
(
git_repository
*
repo
,
int
argc
,
char
**
argv
);
int
index_pack
(
git_repository
*
repo
,
int
argc
,
char
**
argv
);
int
do_clone
(
git_repository
*
repo
,
int
argc
,
char
**
argv
);
int
do_clone
(
git_repository
*
repo
,
int
argc
,
char
**
argv
);
int
cred_acquire_cb
(
git_cred
**
out
,
const
char
*
url
,
const
char
*
username_from_url
,
unsigned
int
allowed_types
,
void
*
payload
);
#ifndef PRIuZ
#ifndef PRIuZ
/* Define the printf format specifer to use for size_t output */
/* Define the printf format specifer to use for size_t output */
#if defined(_MSC_VER) || defined(__MINGW32__)
#if defined(_MSC_VER) || defined(__MINGW32__)
...
...
examples/network/fetch.c
View file @
7b2b6da6
...
@@ -92,6 +92,7 @@ int fetch(git_repository *repo, int argc, char **argv)
...
@@ -92,6 +92,7 @@ int fetch(git_repository *repo, int argc, char **argv)
callbacks
.
update_tips
=
&
update_cb
;
callbacks
.
update_tips
=
&
update_cb
;
callbacks
.
progress
=
&
progress_cb
;
callbacks
.
progress
=
&
progress_cb
;
git_remote_set_callbacks
(
remote
,
&
callbacks
);
git_remote_set_callbacks
(
remote
,
&
callbacks
);
git_remote_set_cred_acquire_cb
(
remote
,
&
cred_acquire_cb
,
NULL
);
// Set up the information for the background worker thread
// Set up the information for the background worker thread
data
.
remote
=
remote
;
data
.
remote
=
remote
;
...
...
examples/network/ls-remote.c
View file @
7b2b6da6
...
@@ -14,31 +14,6 @@ static int show_ref__cb(git_remote_head *head, void *payload)
...
@@ -14,31 +14,6 @@ static int show_ref__cb(git_remote_head *head, void *payload)
return
0
;
return
0
;
}
}
static
int
use_unnamed
(
git_repository
*
repo
,
const
char
*
url
)
{
git_remote
*
remote
=
NULL
;
int
error
;
// Create an instance of a remote from the URL. The transport to use
// is detected from the URL
error
=
git_remote_create_inmemory
(
&
remote
,
repo
,
NULL
,
url
);
if
(
error
<
0
)
goto
cleanup
;
// When connecting, the underlying code needs to know wether we
// want to push or fetch
error
=
git_remote_connect
(
remote
,
GIT_DIRECTION_FETCH
);
if
(
error
<
0
)
goto
cleanup
;
// With git_remote_ls we can retrieve the advertised heads
error
=
git_remote_ls
(
remote
,
&
show_ref__cb
,
NULL
);
cleanup:
git_remote_free
(
remote
);
return
error
;
}
static
int
use_remote
(
git_repository
*
repo
,
char
*
name
)
static
int
use_remote
(
git_repository
*
repo
,
char
*
name
)
{
{
git_remote
*
remote
=
NULL
;
git_remote
*
remote
=
NULL
;
...
@@ -46,8 +21,13 @@ static int use_remote(git_repository *repo, char *name)
...
@@ -46,8 +21,13 @@ static int use_remote(git_repository *repo, char *name)
// Find the remote by name
// Find the remote by name
error
=
git_remote_load
(
&
remote
,
repo
,
name
);
error
=
git_remote_load
(
&
remote
,
repo
,
name
);
if
(
error
<
0
)
if
(
error
<
0
)
{
goto
cleanup
;
error
=
git_remote_create_inmemory
(
&
remote
,
repo
,
NULL
,
name
);
if
(
error
<
0
)
goto
cleanup
;
}
git_remote_set_cred_acquire_cb
(
remote
,
&
cred_acquire_cb
,
NULL
);
error
=
git_remote_connect
(
remote
,
GIT_DIRECTION_FETCH
);
error
=
git_remote_connect
(
remote
,
GIT_DIRECTION_FETCH
);
if
(
error
<
0
)
if
(
error
<
0
)
...
@@ -72,12 +52,7 @@ int ls_remote(git_repository *repo, int argc, char **argv)
...
@@ -72,12 +52,7 @@ int ls_remote(git_repository *repo, int argc, char **argv)
return
EXIT_FAILURE
;
return
EXIT_FAILURE
;
}
}
/* If there's a ':' in the name, assume it's an URL */
error
=
use_remote
(
repo
,
argv
[
1
]);
if
(
strchr
(
argv
[
1
],
':'
)
!=
NULL
)
{
error
=
use_unnamed
(
repo
,
argv
[
1
]);
}
else
{
error
=
use_remote
(
repo
,
argv
[
1
]);
}
return
error
;
return
error
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment