compile: make it easier to move repos into gitolite
when repos are copied over from elsewhere, one had to run easy install once again to make the new (OS-copied) repo contain the proper update hook. We eliminate this step now, using a new, empty, "hook" as a sentinel and having "compile" check/fix all repos' hooks. Since you have to add the repos to conf anyway, this makes it as seamless as possible. The correct sequence now is - (server) copy the repo at the OS level - (admin clone) add it to conf/gitolite.conf, commit, push
This commit is contained in:
parent
be92feca6d
commit
de0ecd0431
|
@ -7,6 +7,7 @@ In this document:
|
||||||
|
|
||||||
* administer
|
* administer
|
||||||
* adding users and repos
|
* adding users and repos
|
||||||
|
* moving pre-existing repos into gitolite
|
||||||
* specifying gitweb and daemon access
|
* specifying gitweb and daemon access
|
||||||
* custom hooks
|
* custom hooks
|
||||||
* custom git config
|
* custom git config
|
||||||
|
@ -40,6 +41,25 @@ Please read on to see how to do this correctly.
|
||||||
|
|
||||||
* when done, commit your changes and push
|
* when done, commit your changes and push
|
||||||
|
|
||||||
|
#### moving pre-existing repos into gitolite
|
||||||
|
|
||||||
|
One simple way to add a pre-existing repo to gitolite is to let gitolite
|
||||||
|
create it as a brand new repo as in the previous section, and then, from an
|
||||||
|
existing clone, "push --all" to the new one.
|
||||||
|
|
||||||
|
However, if you have many existing repos to add, this can be time-consuming
|
||||||
|
and error-prone. Here's how to take a bunch of existing repos and add them to
|
||||||
|
gitolite:
|
||||||
|
|
||||||
|
* make sure they're *bare* repos ;-)
|
||||||
|
|
||||||
|
* log on to the server and copy the repos to `$REPO_BASE` (which defaults to
|
||||||
|
`~/repositories`), making sure that the directory names end in ".git".
|
||||||
|
|
||||||
|
* back on your workstation, add each repo (without the `.git` suffix) to
|
||||||
|
`conf/gitolite.conf` in your gitolite-admin repo clone. Then add, commit,
|
||||||
|
push.
|
||||||
|
|
||||||
#### specifying gitweb and daemon access
|
#### specifying gitweb and daemon access
|
||||||
|
|
||||||
This is a feature that I personally do not use (corporate environments don't
|
This is a feature that I personally do not use (corporate environments don't
|
||||||
|
|
0
hooks/common/gitolite-hooked
Normal file
0
hooks/common/gitolite-hooked
Normal file
|
@ -61,7 +61,7 @@ $Data::Dumper::Sortkeys = sub { return [ reverse sort keys %{$_[0]} ]; };
|
||||||
open STDOUT, ">", "/dev/null" if (@ARGV and shift eq '-q');
|
open STDOUT, ">", "/dev/null" if (@ARGV and shift eq '-q');
|
||||||
|
|
||||||
# these are set by the "rc" file
|
# these are set by the "rc" file
|
||||||
our ($GL_ADMINDIR, $GL_CONF, $GL_KEYDIR, $GL_CONF_COMPILED, $REPO_BASE, $REPO_UMASK, $PROJECTS_LIST, $GIT_PATH, $SHELL_USERS, $GL_WILDREPOS, $GL_GITCONFIG_KEYS);
|
our ($GL_ADMINDIR, $GL_CONF, $GL_KEYDIR, $GL_CONF_COMPILED, $REPO_BASE, $REPO_UMASK, $PROJECTS_LIST, $GIT_PATH, $SHELL_USERS, $GL_WILDREPOS, $GL_GITCONFIG_KEYS, $GL_PACKAGE_HOOKS);
|
||||||
# and these are set by gitolite.pm
|
# and these are set by gitolite.pm
|
||||||
our ($REPONAME_PATT, $REPOPATT_PATT, $USERNAME_PATT, $AUTH_COMMAND, $AUTH_OPTIONS, $ABRT, $WARN);
|
our ($REPONAME_PATT, $REPOPATT_PATT, $USERNAME_PATT, $AUTH_COMMAND, $AUTH_OPTIONS, $ABRT, $WARN);
|
||||||
|
|
||||||
|
@ -400,6 +400,17 @@ for my $repo (sort keys %repos) {
|
||||||
# new_repo would have chdir'd us away; come back
|
# new_repo would have chdir'd us away; come back
|
||||||
wrap_chdir("$repo_base_abs");
|
wrap_chdir("$repo_base_abs");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# when repos are copied over from elsewhere, one had to run easy install
|
||||||
|
# once again to make the new (OS-copied) repo contain the proper update
|
||||||
|
# hook. Perhaps we can make this easier now, and eliminate the easy
|
||||||
|
# install, with a quick check (and a new, empty, "hook" as a sentinel)
|
||||||
|
unless (-l "$repo.git/hooks/gitolite-hooked") {
|
||||||
|
ln_sf("$GL_ADMINDIR/hooks/common", "*", "$repo.git/hooks");
|
||||||
|
# in case of package install, GL_ADMINDIR is no longer the top cop;
|
||||||
|
# override with the package hooks
|
||||||
|
ln_sf("$GL_PACKAGE_HOOKS/common", "*", "$repo.git/hooks") if $GL_PACKAGE_HOOKS;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
warn "\n\t\t***** WARNING *****\n" .
|
warn "\n\t\t***** WARNING *****\n" .
|
||||||
|
|
Loading…
Reference in a new issue