oracle linux on wsl win11 へ、 git + apache httpd 連携環境を作成し、 httpで cloneやpush可能なgit共有リポジトリにします
step1 - 共有gitベアリポジトリ作成
今回「--shared=0777」のパーミッションとしていますが、 「chown -R apache:apache /var/git」のようにオーナをapacheとしていますので、 単に「--shared」でもよかったのかもしれません
$ sudo su -
# mkdir /var/git; cd /var/git
# mkdir test4.git; cd test4.git
# git init --bare --shared=0777 --initial-branch=main
Initialized empty shared Git repository in /var/git/test4.git/
# chown -R apache:apache /var/git
# tree -phuD /var/git/test4.git
/var/git/test4.git
|-- [-rw-rw-rw- apache 21 Jan 18 19:55] HEAD
|-- [drwxrwsrwx apache 4.0K Jan 18 19:55] branches
|-- [-rw-rw-rw- apache 129 Jan 18 19:55] config
|-- [-rw-rw-rw- apache 73 Jan 18 19:55] description
|-- [drwxrwsrwx apache 4.0K Jan 18 19:55] hooks
| |-- [-rwxrwxrwx apache 478 Jan 18 19:55] applypatch-msg.sample
| |-- [-rwxrwxrwx apache 896 Jan 18 19:55] commit-msg.sample
| |-- [-rwxrwxrwx apache 4.6K Jan 18 19:55] fsmonitor-watchman.sample
| |-- [-rwxrwxrwx apache 189 Jan 18 19:55] post-update.sample
| |-- [-rwxrwxrwx apache 424 Jan 18 19:55] pre-applypatch.sample
| |-- [-rwxrwxrwx apache 1.6K Jan 18 19:55] pre-commit.sample
| |-- [-rwxrwxrwx apache 416 Jan 18 19:55] pre-merge-commit.sample
| |-- [-rwxrwxrwx apache 1.3K Jan 18 19:55] pre-push.sample
| |-- [-rwxrwxrwx apache 4.8K Jan 18 19:55] pre-rebase.sample
| |-- [-rwxrwxrwx apache 544 Jan 18 19:55] pre-receive.sample
| |-- [-rwxrwxrwx apache 1.5K Jan 18 19:55] prepare-commit-msg.sample
| |-- [-rwxrwxrwx apache 2.7K Jan 18 19:55] push-to-checkout.sample
| |-- [-rwxrwxrwx apache 2.3K Jan 18 19:55] sendemail-validate.sample
| `-- [-rwxrwxrwx apache 3.6K Jan 18 19:55] update.sample
|-- [drwxrwsrwx apache 4.0K Jan 18 19:55] info
| `-- [-rw-rw-rw- apache 240 Jan 18 19:55] exclude
|-- [drwxrwsrwx apache 4.0K Jan 18 19:55] objects
| |-- [drwxrwsrwx apache 4.0K Jan 18 19:55] info
| `-- [drwxrwsrwx apache 4.0K Jan 18 19:55] pack
`-- [drwxrwsrwx apache 4.0K Jan 18 19:55] refs
|-- [drwxrwsrwx apache 4.0K Jan 18 19:55] heads
`-- [drwxrwsrwx apache 4.0K Jan 18 19:55] tags
step2 - local リポジトリ作成 から初回push
先程作成したベアリポジトリは全くの空ですので、 README.TXTをpushしておきます
$ cd ~/tmp/ $ mkdir test4; cd test4 $ git init Initialized empty Git repository in /home/end0tknr/tmp/test4/.git/ $ echo "Initial commit" > README.TXT $ git add README.TXT $ git commit -m "Initial commit" [main (root-commit) 66b413d] Initial commit 1 file changed, 1 insertion(+) create mode 100644 README.TXT $ git remote add origin /var/git/test4.git $ git branch -M main $ git push origin main Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Writing objects: 100% (3/3), 223 bytes | 223.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 To /var/git/test4.git * [new branch] main -> main
上記を行った後、localからgit cloneできることを確認しておきます
$ rm -rf ~/tmp/test4/
$ git clone /var/git/test4.git
Cloning into 'test4'...
done.
$ tree -phuD test4
test4
`-- [-rw-rw-r-- end0tknr 15 Jan 18 20:02] README.TXT
step3 - /etc/httpd/conf.d/git.conf 作成
$ sudo vi /etc/httpd/conf.d/git.conf ScriptAlias /git /usr/libexec/git-core/git-http-backend SetEnv GIT_PROJECT_ROOT /var/git SetEnv GIT_HTTP_EXPORT_ALL SetEnv REMOTE_USER $REDIRECT_REMOTE_USER <Location "/git"> Require all granted </Location>
本番では Location "/git" 以下にBASIC認証等を設定しますが、 今回、認証設定を行わない為、「SetEnv REMOTE_USER $REDIRECT_REMOTE_USER」を 記載しています。
尚、この記載なしで、http経由でgit pushすると、以下のエラーとなります。
git push origin main fatal: unable to access 'http://localhost/git/test4.git/': The requested URL returned error: 403
step4 - http での git cloneや pushのテスト
$ git clone http://localhost/git/test4.git
Cloning into 'test4'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
$ tree -phuD test4
test4
`-- [-rw-rw-r-- end0tknr 15 Jan 18 20:59] README.TXT
$ echo "Modified commit" >> README.TXT
$ git add README.TXT
$ git commit -m "Modified commit"
[main 76f4d5b] Modified commit
1 file changed, 1 insertion(+)
$ git push origin main
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 264 bytes | 264.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To http://localhost/git/test4.git
66b413d..76f4d5b main -> main