以下の内容はhttps://end0tknr.hateblo.jp/entry/20250119/1737239256より取得しました。


git-http-backend による git + apache httpd 連携

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



以上の内容はhttps://end0tknr.hateblo.jp/entry/20250119/1737239256より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14