私たちは、複数の人が同じパッケージで作業できるプラットフォームを持っています。したがって、私たちは、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
リポジトリ名に変更してください。)