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


git-http-backend による git + iis for win 連携

git-http-backend による git + apache httpd 連携 - end0tknr's kipple - web写経開発

先日の上記entryに対し、今回はwindows版です。 尚、git for win のversionは、2.42.0

DOS> where git
  C:\Program Files\Git\cmd\git.exe
DOS> git --version
  git version 2.42.0.windows.2

step1 - 共有gitベアリポジトリ作成

管理者としてコマンドプロンプトを起動し、以下。

DOS> mkdir C:\inetpub\wwwroot\git\git\test5.git
DOS> cd    C:\inetpub\wwwroot\git\git\test5.git
DOS> git init --bare --share --initial-branch=main

DOS> tree /F
C:.
│  config
│  description
│  HEAD
├─hooks
│      applypatch-msg.sample
│      commit-msg.sample
│      fsmonitor-watchman.sample
│      post-update.sample
│      pre-applypatch.sample
│      pre-commit.sample
│      pre-merge-commit.sample
│      pre-push.sample
│      pre-rebase.sample
│      pre-receive.sample
│      prepare-commit-msg.sample
│      push-to-checkout.sample
│      sendemail-validate.sample
│      update.sample
├─info
│      exclude
├─objects
│  ├─info
│  └─pack
└─refs
    ├─heads
    └─tags

※ 当初、リモートリポジトリのpathは C:\inetpub\wwwroot\git\test5.git としていましたが、 IISまたはgit-http-backend.exeがここを見つけられなかった為、 C:\inetpub\wwwroot\git\git\test5.git のように 「git」を2コ並べています。

old) C:\inetpub\wwwroot\git\test5.git
new) C:\inetpub\wwwroot\git\git\test5.git

step2 c:/inetpub/wwwroot/git/git/test5.git/config の編集

以下の「receivepack = true」がないと、 git push origin main 時に Service not enabled: ‘receive-pack’403 エラーとなります

[http]
   receivepack = true

step3 - local リポジトリ作成 から初回push

管理者としてコマンドプロンプトを起動し、以下

DOS> mkdir C:\tmp\test5.git
DOS> cd    C:\tmp\test5.git
DOS> git init

DOS> echo "Initial commit" > README.TXT
DOS> git add README.TXT
DOS> git commit -m "Initial commit"

DOS> git remote add origin C:\inetpub\wwwroot\git\git\test5.git
DOS> git branch -M main
DOS> git push origin main

通常コマンドプロンプトを起動し、localからgit cloneできることを確認

DOS> cd C:\Users\end0t\tmp
DOS> git clone C:\inetpub\wwwroot\git\git\test5.git
Cloning into 'test5'...
done.

DOS> cd test5
DOS> tree /F
C:.
    README.TXT

step4 IISのハンドラーマッピングに git-http-backend.exe を登録

更に c:/inetpub/wwwroot/web.config を追加

<configuration>
  <system.webServer>
    <handlers>
      <add name="GitBackend" path="git/*" verb="*" modules="CgiModule"
           scriptProcessor="C:\Program Files\Git\mingw64\libexec\git-core\git-http-backend.exe"
           resourceType="Unspecified" requireAccess="None" />
    </handlers>
  </system.webServer>
</configuration>

システム環境変数の追加

変数
GIT_PROJECT_ROOT C:\inetpub\wwwroot\git
GIT_HTTP_EXPORT_ALL 1

更に C:\Windows\System32\inetsrv\config\applicationHost.config を 編集することで、上記の環境変数IISに反映されるようです。

old) <section name="handlers" overrideModeDefault="Deny" />
new) <section name="handlers" overrideModeDefault="Allow" />

old) <processModel identityType="ApplicationPoolIdentity"
old)    loadUserProfile="true" setProfileEnvironment="false" />
new) <processModel identityType="ApplicationPoolIdentity"
new)    loadUserProfile="true" setProfileEnvironment="true" />

step4 - http での git cloneや pushのテスト

DOS> git clone http://localhost/git/test5.git
DOS> cd test5

DOS> echo "Modified commit" >> README.TXT
DOS> git add README.TXT
DOS> git commit -m "Modified commit"
DOS> git push origin main
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 269 bytes | 269.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To http://localhost/git/test5.git
   96e3f43..29284ab  main -> main



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

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