

Request-
Pullの仕組みは開発クローンで変更した内容をベアリポジトリにPushしたとき、Pushによりベアリポジトリが更新されたことを他の開発者にメールで知らせることと理解しています。  
ネットなどの情報からは、その機能を働かせるためにホスティングサービス側が提供しているGitHubなどを利用しなければならないとあります。  
本当のところ、GitHubなどのホスティングサービスを使用せず、Request-Pull機能の利用はできないのでしょうか。  
もし、GitHubなどのホスティングサービスを使用しないでRequest-Pull機能の利用が可能なら、その方法を御教授ください。

目的：クローンからPushしてベアリポジトリが更新されたことを他の開発者にメールで通知しPullを促す  
条件：GitHubを使わず、Git（SourceTree，Git for Windows）のみで実現する  
環境：クローンノンベアリポジトリ配置PC - Windows10 Pro  
クローンノンベアリポジトリでのCommit/Push/Pullソフトウェア - SourceTree  
ベアリポジトリ配置PC - Windows10 Pro for Workstation  
ネットワーク：イントラネット

上記環境に於いて、目的は達成できない、は正しいですか？  
GitHubのようなホスティングサービスでのみ目的は達成できる、は正しいですか？  
上記環境でできるならば、その具体的な方法を教えてください。  
以上、よろしくお願いします。


CC BY-SA 4.0
2021-08-05T08:05:09.063
80616
2021-08-11T06:26:45.737
2021-08-11T06:26:45.737
3060
42388
question
git
GitHubなどのホスティングサービスを利用しないRequest-Pull機能の利用は可能か


[`git request-pull`コマンド](https://git-scm.com/docs/git-request-pull)の実例は [5.2
Git での分散作業 - プロジェクトへの貢献 > フォークされた公開プロジェクト](https://git-
scm.com/book/ja/v2/Git-%E3%81%A7%E3%81%AE%E5%88%86%E6%95%A3%E4%BD%9C%E6%A5%AD-%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%B8%E3%81%AE%E8%B2%A2%E7%8C%AE#r_public_project)にあります。

この例において、なぜホスティングサービスが必要かというと、自分が行った作業内容(を含むリポジトリ)を、メンテナが参照可能な場所に公開しないといけないからです。

メンテナンス対象リポジトリに自分が`git push`可能であるならば、自分の作業を直接そこへ`push`する運用も採用できます(同ページ
[非公開な小規模のチーム](https://git-
scm.com/book/ja/v2/Git-%E3%81%A7%E3%81%AE%E5%88%86%E6%95%A3%E4%BD%9C%E6%A5%AD-%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%B8%E3%81%AE%E8%B2%A2%E7%8C%AE#r_private_team)
のような環境)。この場合は別にホスティングサービスは不要です。

* * *

コメントを読んで思ったのですが、質問したいのは `request-pull` ではなく[`post-receive`](https://git-
scm.com/book/ja/v2/Git-%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA-
Git-%E3%83%95%E3%83%83%E3%82%AF#_%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%B5%E3%82%A4%E3%83%89%E3%83%95%E3%83%83%E3%82%AF)についてなのかな、と思いました。

こちらは、[githooks](https://git-scm.com/docs/githooks)というGitの機能で、`request-
pull`とは直接関係はありません。

[`post-receive-
email`](https://github.com/git/git/blob/master/contrib/hooks/post-receive-
email)は、このhook機能を利用して、誰かが`git push`したらその情報をメールで送信する、というスクリプトです。

> hooksディレクトリにpost-receive.sampleとpost-receive-mail.sampleが存在しません。

これは自分自身で作成して、自分自身で設置する必要が有ります([8.3 Git のカスタマイズ - Git フック](https://git-
scm.com/book/ja/v2/Git-%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA-
Git-%E3%83%95%E3%83%83%E3%82%AF)に設置方法など説明があります)。  
…が、一般的で有用なものは[`contrib/hooks`](https://github.com/git/git/tree/master/contrib/hooks)として提供されており、これを少しカスタマイズすれば利用できるようになっています。  
そのうちのひとつが`post-receive-email`です。

ただし、それらは大抵Unix系OSを前提としており、Windowsは考慮されていないと思います(ので、やはり基本的には自分で実装する必要があるでしょう)。  
例えば、`post-receive-
email`では[`/usr/sbin/sendmail`がセットアップされている前提](https://github.com/git/git/blob/15beaaa/contrib/hooks/post-
receive-email#L704-L711)で書かれています。

* * *

なぜ `post-receive.sample` や `post-receive-mail.sample`
が存在していると考えているのでしょう？(なにかドキュメントを読んでそう考えられていると思うのですが、それは何でしょう？)  
`post-receive.sample` は
[2011年ごろ(v1.7.7)に削除されているよう](https://github.com/git/git/commit/8d714b11df2b65e5f4272c1616e561930010be90)なので、何か資料を参考にされているのであれば、記述が古すぎる可能性があります。


CC BY-SA 4.0
2021-08-05T17:42:31.713
80624
2021-08-11T01:50:35.120
2021-08-11T01:50:35.120
2808
2808
80616
answer


GitHubですとアカウントが用意され、アクセス制御が行われていますが、git単体にはそのような制御はありません。そのため、送信者がPull
Requestを送り込む時点で、送信者には送り先のリポジトリへの書き込み権が存在することになり、mergeまで実行できてしまいます。

アクセス制御を行わず完全に切り離された環境で実現するシンプルな方法として[git diff / git apply](https://git-
scm.com/book/ja/v2/Git-%E3%81%A7%E3%81%AE%E5%88%86%E6%95%A3%E4%BD%9C%E6%A5%AD-%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E9%81%8B%E5%96%B6#r_patches_from_email)が用意されています。git
diffではメール原稿が出力されるのでそれをメールとして送信します。受信者はパッチに問題がなければgit applyで取り込むことができます。


CC BY-SA 4.0
2021-08-06T00:04:08.197
80626
2021-08-06T00:04:08.197
4236
80616
answer


質問は、オンプレで動く(いわゆる)GitHubクローンを導入したい、ということかなとも思いました。  
とすると、"github alternatives on-premises" などのキーワードで検索すると候補がヒットすると思います。例えば:

  * [6 Github alternatives that are open source and self-hosted - nixCraft](https://www.cyberciti.biz/open-source/github-alternatives-open-source-seflt-hosted)
  * [5 open source alternatives to GitHub | Opensource.com](https://opensource.com/article/20/11/open-source-alternatives-github)

([上記リンク先にも有ります](https://opensource.com/life/16/8/how-construct-your-own-git-
server-part-6)が)githooksを活用して素のGitで管理する、というのも確かにこれらの選択肢のうちのひとつとして存在します。

大半はUnix系OSが前提となっており、Windowsでの選択肢は限られると思います。

私が知っている範囲では、[GitBucket](https://gitbucket.github.io/)はJVM上で動作するので、Windows上にも導入できます([参考](https://sukkiri.jp/technologies/devtools/gitbucket/gitbucket_install.html))。


CC BY-SA 4.0
2021-08-10T11:01:50.270
80709
2021-08-10T11:01:50.270
2808
80616
answer