git-daemon - Linux
Overview
git-daemon is a network service that allows users to access and interact with a Git repository over a network connection using the Git protocol. It provides an efficient and secure way to host and share Git repositories, enabling remote collaboration and access to shared code.
Syntax
git daemon --port=<port> --export-all=<true/false> --verbose=<true/false> --listen=<host> --enable=<url-list> --disable=<url-list> --info-refs=<file>
Options/Flags
- –port: Specifies the network port on which the Git daemon listens for incoming connections.
- –export-all: Determines whether all refs should be exported or only those that are reachable from the default branch.
- –verbose: Controls the verbosity level of the Git daemon’s output.
- –listen: Specifies the server’s host interface on which the daemon listens for connections.
- –enable: Enables access to the specified URL(s) or patterns (e.g., –enable=https://domain.com/*).
- –disable: Disables access to the specified URL(s) or patterns (e.g., –disable=https://domain.com/*).
- –info-refs: Specifies a file containing custom information references to be exported by
git-daemon
.
Examples
Basic usage:
git daemon --port=9418
Exporting all refs:
git daemon --export-all=true --port=9418
Limiting access to specific URLs:
git daemon --enable=https://example.com/* --disable=*
Common Issues
- Permission errors: Ensure the user running
git-daemon
has the necessary read/write permissions to the Git repository. - Port conflicts: Check if the specified port is already in use by another application.
- Firewall blocking: Ensure the configured port is open in the system’s firewall.
Integration
git-daemon
can be integrated with other tools to enhance its functionality:
- Apache2: Use mod_dav_svn module to integrate
git-daemon
with Apache2 for HTTP-based access. - tunnels: Securely tunnel Git traffic over SSH using tools like
ssh
,stunnel
, orsocat
.
Related Commands
- git: The primary command-line tool for interacting with Git repositories.
- git-upload-pack: Used to transfer data to a client for a fetch.
- git-receive-pack: Used to transfer data from a client for a push.