元木です。 > submodule の内容をメインの方に戻しましょうか? > submodule にした理由は以前のメールで書いたと思いますが、 > JM のメインレポジトリーに merge back しても大きな差分はないと思います。 > 個人的にはどちらでもいいですが、 submodule の面倒を見る手間が、 > JM のメインレポジトリーへの merge back で解消するなら、ハッピーです。 > この方向でよければ、やっておきます。 submodule を戻すかどうかについてのこの部分に意見をいただけませんか。 個人的には jm レポジトリに一本化するのがいいと思っていて、 手元ではすでに merge back したものがあります。 これだけ説明が必要ということはわかりにくいということを示していると思います。 git submodule の使い方を説明するのも、そろそろやめにしたいので。 以下、質問にも答えておきます。 On Tue, Mar 9, 2021 at 11:33 AM 長南洋一 <cyoic****@maple*****> wrote: > > 長南です。 > > > > JM 側から submodule 内の更新ができるのか、知りたいだけです > > > (できるのなら、その手順も)。 > > > 具体的な手順は以下の<参考>を見てください。 > > 元木さんは、要するに、JM 側から submodule の本体であるリポジトリを > 変更できるとおっしゃっているのですね。 > > 試しに LDP man page の release 以下にあるファイルを 1 個修正して > (たとえば、jm/manual/LDP_man-pages/release/man2/open.2 のタイポの > 修正でもして)、git push してみれば、JM の側から LDP submodule の本体を > 変更できるかどうか分かるだろうと思うのですが、怖くてできません。万一、 > おかしなことになったとき、元に戻せる自信がありませんから。そこで、もうちょっと > 理屈を言ってみます。それで済めば、その方が気が楽ですから。 > > > <参考> > > > $ cd manual/LDP_man-pages > > ↓ ここから LDP_man-pages repository に対する操作 > > $ git checkout master > > 編集いろいろ > > 上の例で言うと、ここで release/man2/open.2 を修正するわけですね。 > > > $ git add (-u) ... > > $ git commit > > ここまでは、問題なくできると思います。 > > > $ git push > > これは、JM ではなく、JM の外部にある LDP_man-pages のリポジトリに > push しているのですね。私のところでは、多分ここで失敗すると思います。 正確には、osdn.net の linuxjm プロジェクト配下にある別のレポジトリになります。 https://osdn.net/projects/linuxjm/scm/ を見てもらうとわかりますが、 "jm" 以外に "LDP_man-pages" などのレポジトリがあります。 実体はこいつらです。 > 何度も引用しますが、man git-submodule に "you cannot modify the > contents of the submodule from within the main project." と > 書いてあるからばかりではありません (当方の常用は、ある事情から debian 9 で、 > それに入っている git 2.11.0 の git-submodule の man には、そう書いて > あるのですが、debian 10 の git 2.20.2 の git-submodule の man には、 > この文がありません。そのため、私としては、この文を全面的に信用してよいかどうか、 > わからなくなっています)。 引用されている部分については正しいです。 the submodule である LDP_man-pages レポジトリに対する変更は LDP_man-pages レポジトリに対して行わないといけません。 the main project である "jm" の方からは、 LDP_man-pages レポジトリの どのコミットを取り込むかを変更することしかできません。 なぜ最新の方では削除されたかは私はわかりません。 > submodule は、基本的に他人様の project ですから、利用させてもらうことは > 出来ても、こちらから勝手にあちらの内容を書き変えることは、原則としてやっては > いけない、だから、出来ないものだと思うのです。元木さんが JM 側から LDP > man-pages の submodule を変更できるとしたら、それは、元木さんが両方の > 開発メンバーだからではないでしょうか。 上に書きましたが、 LDP_man-pages レポジトリも osdn.net の linuxjm プロジェクトの レポジトリなので、 linuxjm プロジェクトのメンバーは書き込み権限を持っています。 jm を同じ権限になっているはずです。 あくまで別レポジトリにコミットするという意識は必要です。 前に書いた通り、submodule がそういうコンセプトなので。 submodule の考え方が、別の repository の特定のコミットを自分のツリーに組み込む、 というものです。submodule 側でもコミットがどんどん行われて、 区切りのいいタイミングで、親の方に取り込むというコンセプト。 > どうせなので、ついでに書いておきます。jm/.git/config を見ると、 > submodule の url のプロトコルが git になっています。かりに、JM 側から > submodule の本体の内容を変更できるとしても、プロトコルが git でも > 出来るのでしょうか。昔の sourceforge 時代の英文マニュアルには、push する > 必要があるのならば、プロトコルを ssh にしろ、と書いてあった記憶があるのですが、 > 今では変わったのでしょうか。submodule の場合は、話が別なのでしょうか。 ここは長南さんが正しいです。 submodule を git プロトコルで指定しているので、そのままでは submodule の方にも push できません。今のままだと pushurl で SSH か HTTPS を設定する必要があります。 これは、私が submodule を追加したときに、別の場所で LDP_man-pages レポジトリを 作業して、jm レポジトリ側に取り込むという形で作業していたので、気づかなかっただけです。