マルチユーザープラットフォームでのgit設定とファイル所有権の管理

マルチユーザープラットフォームでのgit設定とファイル所有権の管理

私たちは、複数の人が同じパッケージで作業できるプラットフォームを持っています。したがって、私たちは、1人のsshkeyと1人の完全なコミット履歴ではなく、すべての人の個人的なgit資格情報を維持しようとします。

アイデアは、次のユーザーがいる可能性があることです。

  • platform_nameマスターユーザーとして、すべてのファイルの所有権を持っているユーザーです。これは、人々がシステムを変更するために使用するユーザーでもあります。
  • firstname_lastname誰にとっても、このユーザーはgit資格情報のみを持っています。このように、人々がfirstname lastnameコミットしたいときにユーザーからコミットします。

しかし、git操作によってファイルの所有権が変更されることが多いため、これは難しくなります。回避策がありますか?それとも、この種の問題を管理するためのより良いシステムがありますか?

ベストアンサー1

したがって、私たちは、1人のsshkeyと1人の完全なコミット履歴ではなく、すべての人の個人的なgit資格情報を維持しようとします。

はい、これは標準的なユースケースです。 gitは分散バージョン管理システムです。誰もが自分のローカルコピーを扱います。コラボレーションは、個々の貢献者が所有していないアップストリーム共有リポジトリに変更を「プッシュ」することによって発生します。

回避策がありますか?それとも、この種の問題を管理するためのより良いシステムがありますか?

gitolite、github、gitlab、gitea / forgejoなどのように動作します...すぐに利用可能です!

いつものように、各ユーザーは自分のコンピュータに独自のユーザーアカウントを持っており、変更はありません。

中央のgitリポジトリの場合: Unixユーザー(通常は名前git)があります。そのユーザーのすべての接続を個々の貢献者を認識し、認証に使用するSSHキーで区別するデーモンに転送するようにSSHサーバーを設定します。

比較的設定が簡単:どのUNIXシステムを使用しているかはわかりませんが、私がしなければならないことは(Fedora F38、RedHat / Alma / Rocky / CentOS / OpenSUSEにも同じことが当てはまります...)だけでした。インストールするpodman、コンテナを実行できることを確認し(usermod --add-subuids 100000-165535 --add-subgids 100000-165535 YOURUSERNAMEHEREこれを実行)、次を実行します。

podman volume create forgejo-config
podman volume create forgejo-data
podman run \
   -it \
   -p 3000:3000 -p 2222:2222 \
   -v forgejo-config:/etc/gitea \
   -v forgejo-data:/var/lib/gitea \
   --name forgejo \
   codeberg.org/forgejo/forgejo:1.18.3-1-rootless

次に、ブラウザをhttp://localhost:3000にリダイレクトし、デフォルトを受け入れ、管理者になる新しいユーザーを登録します。各 git ユーザーは同じインターフェースに新しいユーザーを登録します。それは簡単です!

Web UIの設定に移動して公開SSHキーをアップロードします。

そこで、彼らは自分の名前空間に新しいリポジトリを作成したり、個々のリポジトリマネージャを介してアクセス権を持つリポジトリにアクセスしたりできます。

git clone ssh://git@localhost:2222/projectowner/project

(もちろん、localhost同じマシンにいない場合は、マシン名に置き換えて、projectowner所有しているユーザー、プロジェクト名、projectリポジトリ名に変更してください。)

おすすめ記事