mirror of
https://github.com/aljazceru/gitpear.git
synced 2025-12-17 06:04:25 +01:00
35
Dockerfile
Normal file
35
Dockerfile
Normal file
@@ -0,0 +1,35 @@
|
||||
# Use the official Node.js image as the base image
|
||||
FROM node:latest
|
||||
|
||||
# install nginx
|
||||
RUN apt-get update && apt-get install -y nginx git fcgiwrap spawn-fcgi
|
||||
ENV GIT_PEAR=/srv/repos/pear
|
||||
EXPOSE 80
|
||||
STOPSIGNAL SIGTERM
|
||||
# Set the working directory inside the container
|
||||
WORKDIR /app
|
||||
|
||||
# Clone the gitpear repository from GitHub
|
||||
RUN git clone https://github.com/dzdidi/gitpear.git
|
||||
|
||||
# Change the working directory to the gitpear directory
|
||||
WORKDIR /app/gitpear
|
||||
|
||||
# Install the dependencies using npm
|
||||
RUN npm install
|
||||
|
||||
# Link the gitpear package globally
|
||||
RUN npm link
|
||||
|
||||
RUN mkdir -p /srv/repos/pear
|
||||
|
||||
|
||||
COPY default /etc/nginx/sites-enabled/default
|
||||
|
||||
WORKDIR /app
|
||||
COPY entrypoint.sh .
|
||||
RUN chmod +x entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/bin/bash", "-c", "/app/entrypoint.sh"]
|
||||
|
||||
|
||||
14
Readme.md
14
Readme.md
@@ -90,7 +90,7 @@ Collaboration is possible with the following flow between Alice and Bob in a pee
|
||||
```
|
||||
cd Repo
|
||||
git pear init -s
|
||||
git pear list
|
||||
git pear list -s
|
||||
# outputs:
|
||||
# Repo pear://<Alice public key>/Repo
|
||||
```
|
||||
@@ -165,3 +165,15 @@ Supported authentication methods are `native` and `nip98`. The `nip98` authentic
|
||||
* `git fetch pear`
|
||||
2. From there she can do
|
||||
* `git diff pear/feat/david` or `git pull pear feat/david` ... merge to master and push to `pear`
|
||||
|
||||
|
||||
## Migrate existing public repository to gitpear
|
||||
Docker image automatically clones the repository and exposes it over http and pear.
|
||||
|
||||
Example:
|
||||
```
|
||||
git clone https://github.com/dzdidi/gitpear.git
|
||||
cd gitpear
|
||||
docker build -t gitpear .
|
||||
docker run -it -p 80:80 -e REPO_URL=https://github.com/dzdidi/repo.git gitpear
|
||||
```
|
||||
18
default
Normal file
18
default
Normal file
@@ -0,0 +1,18 @@
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
|
||||
# This is where the repositories live on the server
|
||||
root /srv/repos/pear;
|
||||
|
||||
|
||||
location ~ (/.*) {
|
||||
fastcgi_pass unix:/var/run/fcgiwrap.socket;
|
||||
include fastcgi_params;
|
||||
fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
|
||||
# export all repositories under GIT_PROJECT_ROOT
|
||||
fastcgi_param GIT_HTTP_EXPORT_ALL "";
|
||||
fastcgi_param GIT_PROJECT_ROOT /srv/repos/pear;
|
||||
fastcgi_param PATH_INFO $1;
|
||||
}
|
||||
}
|
||||
48
entrypoint.sh
Normal file
48
entrypoint.sh
Normal file
@@ -0,0 +1,48 @@
|
||||
#!/bin/bash
|
||||
# if $1 includes an url
|
||||
exec > >(tee -a "/tmp/deployment.log") 2>&1
|
||||
|
||||
export GIT_PEAR=/srv/repos/pear
|
||||
git pear daemon -s
|
||||
# if $1 exists
|
||||
if [ -n "$1" ]; then
|
||||
REPO_NAME=$1
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if [[ $REPO_NAME =~ ^https.* ]]; then
|
||||
ORIGINAL_NAME=$(basename $REPO_NAME .git)
|
||||
mkdir -p /srv/repos/"$ORIGINAL_NAME"
|
||||
git clone $REPO_NAME /srv/repos/"$ORIGINAL_NAME"
|
||||
cd /srv/repos/"$ORIGINAL_NAME"
|
||||
git pear init -s
|
||||
# enter pear repo and expose http
|
||||
cd /srv/repos/pear/"$ORIGINAL_NAME"/
|
||||
echo "[http]" >> config
|
||||
echo " receivepack = true" >> config
|
||||
fi
|
||||
|
||||
|
||||
if [[ ! $REPO_NAME =~ ^https.* ]]; then
|
||||
mkdir -p /srv/repos/"$REPO_NAME"
|
||||
cd /srv/repos/"$REPO_NAME"
|
||||
git init
|
||||
git pear init -s
|
||||
# enter pear repo and expose http
|
||||
cd /srv/repos/pear/"$REPO_NAME"/
|
||||
echo "[http]" >> config
|
||||
echo " receivepack = true" >> config
|
||||
# git config --bool core.bare true
|
||||
fi
|
||||
PEAR_KEY=$(git pear key)
|
||||
PEAR_REPO=$(git pear list -s)
|
||||
echo "REPO_NAME: $REPO_NAME" >> /tmp/debug.log
|
||||
echo "ORIGINAL_NAME: $ORIGINAL_NAME" >> /tmp/debug.log
|
||||
echo "GIT_PEAR: $GIT_PEAR" >> /tmp/debug.log
|
||||
echo "PEAR_KEY: $PEAR_KEY" >> /tmp/debug.log
|
||||
echo "PEAR_REPO: $PEAR_REPO" >> /tmp/debug.log
|
||||
|
||||
/etc/init.d/fcgiwrap start
|
||||
chmod 766 /var/run/fcgiwrap.socket
|
||||
nginx -g "daemon off;"
|
||||
Reference in New Issue
Block a user