Get rid of "must not start with ." logic

It serves very little purpose and isn't even correct as-is.
This commit is contained in:
Tim Hockin 2023-03-17 16:51:44 -07:00
parent ff1a913bab
commit c3a49e9d46
3 changed files with 12 additions and 79 deletions

View File

@ -156,8 +156,7 @@ OPTIONS
--error-file <string>, $GITSYNC_ERROR_FILE --error-file <string>, $GITSYNC_ERROR_FILE
The path to an optional file into which errors will be written. The path to an optional file into which errors will be written.
This may be an absolute path or a relative path, in which case it This may be an absolute path or a relative path, in which case it
is relative to --root. If it is relative to --root, the first path is relative to --root.
element may not start with a period.
--exechook-backoff <duration>, $GITSYNC_EXECHOOK_BACKOFF --exechook-backoff <duration>, $GITSYNC_EXECHOOK_BACKOFF
The time to wait before retrying a failed --exechook-command. If The time to wait before retrying a failed --exechook-command. If
@ -235,11 +234,10 @@ OPTIONS
The path to at which to create a symlink which points to the The path to at which to create a symlink which points to the
current git directory, at the currently synced hash. This may be current git directory, at the currently synced hash. This may be
an absolute path or a relative path, in which case it is relative an absolute path or a relative path, in which case it is relative
to --root. The last path element is the name of the link and must to --root. Consumers of the synced files should always use this
not start with a period. Consumers of the synced files should link - it is updated atomically and should always be valid. The
always use this link - it is updated atomically and should always basename of the target of the link is the current hash. If not
be valid. The basename of the target of the link is the current specified, this defaults to the leaf dir of --repo.
hash. If not specified, this defaults to the leaf dir of --repo.
--man --man
Print this manual and exit. Print this manual and exit.
@ -325,8 +323,7 @@ OPTIONS
--touch-file <string>, $GITSYNC_TOUCH_FILE --touch-file <string>, $GITSYNC_TOUCH_FILE
The path to an optional file which will be touched whenever a sync The path to an optional file which will be touched whenever a sync
completes. This may be an absolute path or a relative path, in completes. This may be an absolute path or a relative path, in
which case it is relative to --root. If it is relative to --root, which case it is relative to --root.
the first path element may not start with a period.
--username <string>, $GITSYNC_USERNAME --username <string>, $GITSYNC_USERNAME
The username to use for git authentication (see --password-file or The username to use for git authentication (see --password-file or

View File

@ -544,10 +544,6 @@ func main() {
*flVerbose = *flDeprecatedV *flVerbose = *flDeprecatedV
} }
log := func() *logging.Logger { log := func() *logging.Logger {
if strings.HasPrefix(*flErrorFile, ".") {
fmt.Fprintf(os.Stderr, "ERROR: --error-file may not start with '.'\n")
os.Exit(1)
}
dir, file := makeAbsPath(*flErrorFile, absRoot).Split() dir, file := makeAbsPath(*flErrorFile, absRoot).Split()
return logging.New(dir, file, *flVerbose) return logging.New(dir, file, *flVerbose)
}() }()
@ -597,9 +593,6 @@ func main() {
parts := strings.Split(strings.Trim(*flRepo, "/"), "/") parts := strings.Split(strings.Trim(*flRepo, "/"), "/")
*flLink = parts[len(parts)-1] *flLink = parts[len(parts)-1]
} }
if strings.HasPrefix(filepath.Base(*flLink), ".") {
handleConfigError(log, true, "ERROR: --link must not start with '.'")
}
if *flDeprecatedWait != 0 { if *flDeprecatedWait != 0 {
// Back-compat // Back-compat
@ -647,12 +640,6 @@ func main() {
*flMaxFailures = *flDeprecatedMaxSyncFailures *flMaxFailures = *flDeprecatedMaxSyncFailures
} }
if *flTouchFile != "" {
if strings.HasPrefix(*flTouchFile, ".") {
handleConfigError(log, true, "ERROR: --touch-file may not start with '.'")
}
}
if *flDeprecatedSyncHookCommand != "" { if *flDeprecatedSyncHookCommand != "" {
// Back-compat // Back-compat
log.V(0).Info("setting --exechook-command from deprecated --sync-hook-command") log.V(0).Info("setting --exechook-command from deprecated --sync-hook-command")
@ -2301,8 +2288,7 @@ OPTIONS
--error-file <string>, $GITSYNC_ERROR_FILE --error-file <string>, $GITSYNC_ERROR_FILE
The path to an optional file into which errors will be written. The path to an optional file into which errors will be written.
This may be an absolute path or a relative path, in which case it This may be an absolute path or a relative path, in which case it
is relative to --root. If it is relative to --root, the first path is relative to --root.
element may not start with a period.
--exechook-backoff <duration>, $GITSYNC_EXECHOOK_BACKOFF --exechook-backoff <duration>, $GITSYNC_EXECHOOK_BACKOFF
The time to wait before retrying a failed --exechook-command. If The time to wait before retrying a failed --exechook-command. If
@ -2387,11 +2373,10 @@ OPTIONS
The path to at which to create a symlink which points to the The path to at which to create a symlink which points to the
current git directory, at the currently synced hash. This may be current git directory, at the currently synced hash. This may be
an absolute path or a relative path, in which case it is relative an absolute path or a relative path, in which case it is relative
to --root. The last path element is the name of the link and must to --root. Consumers of the synced files should always use this
not start with a period. Consumers of the synced files should link - it is updated atomically and should always be valid. The
always use this link - it is updated atomically and should always basename of the target of the link is the current hash. If not
be valid. The basename of the target of the link is the current specified, this defaults to the leaf dir of --repo.
hash. If not specified, this defaults to the leaf dir of --repo.
--man --man
Print this manual and exit. Print this manual and exit.
@ -2484,8 +2469,7 @@ OPTIONS
--touch-file <string>, $GITSYNC_TOUCH_FILE --touch-file <string>, $GITSYNC_TOUCH_FILE
The path to an optional file which will be touched whenever a sync The path to an optional file which will be touched whenever a sync
completes. This may be an absolute path or a relative path, in completes. This may be an absolute path or a relative path, in
which case it is relative to --root. If it is relative to --root, which case it is relative to --root.
the first path element may not start with a period.
--username <string>, $GITSYNC_USERNAME --username <string>, $GITSYNC_USERNAME
The username to use for git authentication (see --password-file or The username to use for git authentication (see --password-file or

View File

@ -2661,30 +2661,6 @@ function e2e::export_error_abs_path() {
) )
} }
##############################################
# Test export-error with invalid path
##############################################
function e2e::export_error_invalid_file() {
echo "$FUNCNAME" > "$REPO/file"
git -C "$REPO" commit -qam "$FUNCNAME"
(
set +o errexit
GIT_SYNC \
--repo="file://$REPO" \
--root="$ROOT" \
--link="link" \
--error-file=".error.json"
RET=$?
if [[ "$RET" != 1 ]]; then
fail "expected exit code 1, got $RET"
fi
assert_file_absent "$ROOT/link"
assert_file_absent "$ROOT/link/file"
assert_file_absent "$ROOT/.error.json"
)
}
############################################## ##############################################
# Test touch-file # Test touch-file
############################################## ##############################################
@ -2793,30 +2769,6 @@ function e2e::touch_file_abs_path() {
assert_file_absent "$ROOT/dir/touch.file" assert_file_absent "$ROOT/dir/touch.file"
} }
##############################################
# Test touch-file with invalid path
##############################################
function e2e::touch_file_invalid_file() {
echo "$FUNCNAME" > "$REPO/file"
git -C "$REPO" commit -qam "$FUNCNAME"
(
set +o errexit
GIT_SYNC \
--repo="file://$REPO" \
--root="$ROOT" \
--link="link" \
--touch-file=".touch.file"
RET=$?
if [[ "$RET" != 1 ]]; then
fail "expected exit code 1, got $RET"
fi
assert_file_absent "$ROOT/link"
assert_file_absent "$ROOT/link/file"
assert_file_absent "$ROOT/.touch.file"
)
}
############################################## ##############################################
# Test github HTTPS # Test github HTTPS
# TODO: it would be better if we set up a local HTTPS server # TODO: it would be better if we set up a local HTTPS server