Commit Graph

139 Commits

Author SHA1 Message Date
ugurkenar df69fab365 cmd,hook and logging package 2021-08-16 12:40:27 +03:00
Tim Hockin 2a81ea69f0 Add option to read passwd from file
This is a port of #431.

A new flag `--password-file` is added. This allows git-sync to read
password from file and this is considered as safer than reading from
env or flag directly.

Few more checks are added as well:

1. `--password` and `--password-file` can't be specified at the same
time.
2. If `--username` is specified, then one of `--password` or
`--password-file` must be specified.
2021-07-05 15:49:18 -07:00
barney-s 6baccb4c5d Check for rev to be present after a fetch
When we fetch expecting a rev/hash to be present, defensively check and fail gracefully so that a subsequent sync would get it.  Check for missing hash after a git fetch with shallow depth
2021-06-23 14:56:39 -04:00
barney-s fe9c059828 Cleanup worktree defensively
This is to avoid wedge cases where the worktree was created but this function error'd without cleaning the worktree.
Next timearound, the sync loop fails to create the worktree and bails out.

We observed a case where due to #412, the next sync loop failed with this error:
" Run(git worktree add /repo/root/rev-nnnn origin/develop): exit status 128: { stdout: \"Preparing worktree (detached HEAD nnnn)\\n\", stderr: \"fatal: '/repo/root/rev-nnnn' already exists\\n\" }"
2021-06-22 16:40:58 -04:00
Brian Kennedy edb3f08ec0 Improve error message for askpass.
When endpoint returns non-200 status, include the body in the error
message since it can contain useful information for debugging.  Also
defer closing the response body ReadCloser as this may have leaked in
the past.
2021-06-15 13:38:01 -07:00
Tim Hockin 4765eb5b14 Make sure all code files have headers 2021-05-27 08:45:36 -07:00
Tim Hockin ba20771195 Small error string cleanup 2021-05-26 17:02:54 -07:00
Nan Yu a00627d155 Grant read access for the error file to all users 2021-05-26 14:34:43 -07:00
Tim Hockin e9e682e25e Clean up global flRoot use 2021-05-21 17:10:57 -07:00
Nan Yu 59f8f6a8e1 Create the root directory if it doesn't exist
The `git clone` command will create the root directory if it doesn't
exist, but if `git clone` fails, the root directory needs to be present
so that we can write the error to a file under the directory.
2021-05-11 16:59:17 -07:00
Kubernetes Prow Robot a3affe9040
Merge pull request #372 from SpencerMalone/sparse-checkouts
Add support for sparse-checkout
2021-04-23 08:32:02 -07:00
Spencer Malone 07e552b506 Add support for sparse-checkout 2021-04-23 08:17:58 -07:00
Nan Yu 8ea449292b Export the error details to an error file
The current git-sync process outputs the error information to standard
out, which is inaccessible from outside the container. Users have to
dump the logs using kubectl logs in order to check the error details in
the git-sync process. This commit exports the error details to a file,
which provides users the capability to check the errors directly from
other sidecar containers.

proposal: https://github.com/kubernetes/git-sync/issues/326
2021-04-09 11:00:52 -07:00
Tim Hockin d508f04bbe Move sync-hook to after symlink flip 2021-04-05 17:04:44 -07:00
Tim Hockin 11c2a1fd7b Fix exit non-zero exit codes when running as pid1
Prior to this we would swallow the exit code and always exit(0).
2021-03-15 09:30:46 -07:00
Kubernetes Prow Robot de2a216922
Merge pull request #341 from thockin/add-git-configs-flag-3.x
Add --git-config flag
2021-03-15 07:45:05 -07:00
Tim Hockin 770314995f Change the symlink targets to just the SHA
This allows users to call readlink() on the link and learn the current
checked out SHA.
2021-03-11 22:07:07 -08:00
Tim Hockin 45bba183ca Add --git-config flag
This allows arbitrary git configs to be passed in.  For example:

`git config --global http.postBuffer 1048576000`

`git config --global http.sslCAInfo /path/to/cert/file`

`git config --global http.sslVerify false`

This flag takes a comma-separated list of `key:val` pairs.  The key part
is passed to `git config` and must be a valid gitconfig section header
and variable name.  The val part can be either a quoted or unquoted
value.  For all values the following escape sequences are supported:
   * `\n` => [newline]
   * `\t` => [tab]
   * `\"` => `"`
   * `\,` => `,`
   * `\\` => `\`

Within unquoted values, commas MUST be escaped. Within quoted values,
commas MAY be escaped, but are not required to be.  Any other escape
sequence is an error.

Example:

`--git-config=foo.one:val1,foo.two:"quoted val",foo.three:12345`

This commit exposed a bug in runCommand() which modified its args when
they had an embedded space.
2021-03-10 19:07:05 -08:00
Tim Hockin ffba2eb119 Allow octal and hex values for int flags
This is specifcally relevant to --change-permissions.
2021-01-06 13:49:02 -08:00
unknowingknow 26cd942b2a change to a command name with no args 2020-10-02 19:29:03 +09:00
unknowingknow e1c4717de6 add an option to run the command when the repository is updated 2020-10-02 19:28:25 +09:00
Tim Hockin 44e94a16b0 Fix webhook regression: allow -1 to ignore status 2020-09-25 11:17:56 -07:00
Kubernetes Prow Robot 66320a6b92
Merge pull request #243 from killuazhu/kyle-relax-wait
Relax wait between sync
2020-09-25 10:30:26 -07:00
Tim Hockin 4225d000e0 Clean up askpass function to take url as arg 2020-09-07 17:16:56 -07:00
Kubernetes Prow Robot ed57c29d83
Merge pull request #275 from thockin/7-askpass-metric
Add metric for askpass, noop sync != success
2020-09-07 17:11:42 -07:00
Tim Hockin 9cef5f8ced Improve flag input checking and errors 2020-09-05 10:30:25 -07:00
Kubernetes Prow Robot f67c13654e
Merge pull request #277 from thockin/9-better-logs
Better logs and errors
2020-09-05 10:27:40 -07:00
Kubernetes Prow Robot 9c56b25591
Merge pull request #276 from thockin/8-use-filepath
use filepath.Join, drop dep on path
2020-09-05 10:25:41 -07:00
Tim Hockin 04c85ee1dc Add metric for askpass, noop sync != success 2020-09-05 10:24:08 -07:00
Kubernetes Prow Robot 37f74f46fe
Merge pull request #274 from thockin/6-better-run-logs
Improve logs when running a command
2020-09-05 10:21:41 -07:00
Kubernetes Prow Robot 7d63180e78
Merge pull request #272 from thockin/4-move-setFlagDefaults
Move setFlagDefaults closer to flag code
2020-09-05 10:17:41 -07:00
Tim Hockin e43fb2513e Better logs and errors 2020-09-04 20:14:51 -07:00
Tim Hockin 07b1ab7572 use filepth.Join, drop dep on path 2020-09-04 20:13:22 -07:00
Tim Hockin 5ac2975ec4 Improve logs when running a command 2020-09-04 20:11:34 -07:00
Tim Hockin af755fbe99 Move setFlagDefaults closer to flag code 2020-09-04 20:07:47 -07:00
Tim Hockin 89aad82a31 Minor tweaks to submodules strings & consts
Rename consts internally and shorten help string a bit.
2020-09-04 20:06:44 -07:00
Tim Hockin 366e08ff40 Trivial comment change 2020-09-04 20:03:04 -07:00
alix.cook11 dcf169c10a
add option to NOT recursively clone submodules (#246)
* add option to NOT recursively clone submodules

* Add "shallow" and "off" modes to submodule clone

* update readme to reflect new flag

* wording and such feedback
2020-07-30 21:29:07 -07:00
windayski f44e140358
fix typo
fix typo
2020-06-30 16:21:33 +08:00
Kyle Zhu 1546e3415f
Reduce wait time 2020-04-24 17:32:32 -04:00
Kyle Zhu c1d4d77216
Relax wait between sync 2020-04-24 15:21:09 -04:00
Tim Hockin 82cd91958b Split stdout/stderr in runCommand()
Sometimes git emits things on stderr that are not errors but not part of
the programmatic output either.  Don't combine the output.
2020-03-20 13:44:33 -07:00
Tim Hockin 95a1690e6f Fix 2 bugs in pid1
1) Was calling Wait() on the child process, but also calling Wait4,
which would race, causing an occasional error or panic.

2) In testing (1), I observed occasional hangs.  Tracing it down to a
SIGWINCH, which masked a SIGCHLD, causing it to hang.  Both seem fixed.

Added a manual test script.
2020-03-20 13:44:27 -07:00
Reuben Thomas-Davis 4a75452461 avoid accessing Request in webhook.go until possible error due to invalid url has been handled 2020-03-16 19:49:59 +00:00
Tim Hockin ef8f5cf703 Bump to debian-base 2.0.0 (buster)
This changed `git fetch` to require a `-f` the way we use it.

Also fix a flaky test case for SSH.
2020-01-31 09:20:54 -08:00
Tim Hockin 72deefcec3 Make health check meaningful 2020-01-09 17:20:11 -08:00
Tim Hockin 5154ace66d Add --add-user to write UID/GID to passwd 2020-01-03 16:16:15 -08:00
Chuanying Du b0bdc02e8b manually merge https://github.com/kubernetes/git-sync/pull/217 2019-12-18 20:05:51 -08:00
Chuanying Du 31f276dd58 fix comments 2019-12-18 10:59:20 -08:00
Chuanying Du 6c6c354c72 update docs from auth-url to askpass-url 2019-12-17 11:02:03 -08:00