Mercurial > kallithea
view docs/usage/vcs_notes.rst @ 7633:1bafb2d07709 stable
hooks: make the Python interpreter for Git hooks configurable as 'git_hook_interpreter' (Issue #333)
Commit 5e501b6ee639 introduced the use of 'sys.executable' as interpreter
for git hooks instead of 'python2' with the following argument:
"Windows doesn't necessarily have "python2" available in $PATH, but we
still want to make sure we don't end up invoking a python3. Using the
absolute path seems more safe."
But, sys.executable does not necessarily point to Python. When Kallithea is
started under uWSGI, sys.executable points to the uwsgi executable. As a
result, the interpreter encoded in the git hooks on the server repositories
would be:
#!/path/to/uwsgi
And pushing to such repo would result in following client errors:
$ git push
Password for 'http://user@localhost:5050':
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 241 bytes | 241.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: unable to load configuration from hooks/pre-receive
To http://localhost:5050/gitrepo-new
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'http://user@localhost:5050/gitrepo-new'
Fix this problem by introducing a configuration setting 'git_hook_interpreter'
that allow administrators to specify which Python interpreter to use.
A subsequent commit will cause its value to be filled in automatically when
generating a new ini file, but an administrator can always override it.
author | Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> |
---|---|
date | Mon, 08 Apr 2019 21:32:57 +0200 |
parents | 3158cf0dafb7 |
children |
line wrap: on
line source
.. _vcs_notes: =================================== Version control systems usage notes =================================== .. _importing: Importing existing repositories ------------------------------- There are two main methods to import repositories in Kallithea: via the web interface or via the filesystem. If you have a large number of repositories to import, importing them via the filesystem is more convenient. Importing via web interface ^^^^^^^^^^^^^^^^^^^^^^^^^^^ For a small number of repositories, it may be easier to create the target repositories through the Kallithea web interface, via *Admin > Repositories* or via the *Add Repository* button on the entry page of the web interface. Repositories can be nested in repository groups by first creating the group (via *Admin > Repository Groups* or via the *Add Repository Group* button on the entry page of the web interface) and then selecting the appropriate group when adding the repository. After creation of the (empty) repository, push the existing commits to the *Clone URL* displayed on the repository summary page. For Git repositories, first add the *Clone URL* as remote, then push the commits to that remote. The specific commands to execute are shown under the *Existing repository?* section of the new repository's summary page. A benefit of this method particular for Git repositories, is that the Kallithea-specific Git hooks are installed automatically. For Mercurial, no hooks are required anyway. Importing via the filesystem ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The alternative method of importing repositories consists of creating the repositories in the desired hierarchy on the filesystem and letting Kallithea scan that location. All repositories are stored in a central location on the filesystem. This location is specified during installation (via ``db-create``) and can be reviewed at *Admin > Settings > VCS > Location of repositories*. Repository groups (defined in *Admin > Repository Groups*) are represented by a directory in that repository location. Repositories of the repository group are nested under that directory. To import a set of repositories and organize them in a certain repository group structure, first place clones in the desired hierarchy at the configured repository location. These clones should be created without working directory. For Mercurial, this is done with ``hg clone -U``, for Git with ``git clone --bare``. When the repositories are added correctly on the filesystem: * go to *Admin > Settings > Remap and Rescan* in the Kallithea web interface * select the *Install Git hooks* checkbox when importing Git repositories * click *Rescan Repositories* This step will scan the filesystem and create the appropriate repository groups and repositories in Kallithea. *Note*: Once repository groups have been created this way, manage their access permissions through the Kallithea web interface. Mercurial-specific notes ------------------------ Working with subrepositories ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This section explains how to use Mercurial subrepositories_ in Kallithea. Example usage:: ## init a simple repo hg init mainrepo cd mainrepo echo "file" > file hg add file hg ci --message "initial file" # clone subrepo we want to add from Kallithea hg clone http://kallithea.local/subrepo ## specify URL to existing repo in Kallithea as subrepository path echo "subrepo = http://kallithea.local/subrepo" > .hgsub hg add .hgsub hg ci --message "added remote subrepo" In the file list of a clone of ``mainrepo`` you will see a connected subrepository at the revision it was cloned with. Clicking on the subrepository link sends you to the proper repository in Kallithea. Cloning ``mainrepo`` will also clone the attached subrepository. Next we can edit the subrepository data, and push back to Kallithea. This will update both repositories. .. _subrepositories: http://mercurial.aragost.com/kick-start/en/subrepositories/