web-dev-qa-db-ja.com

gitを使用しているときにforkで個々のファイルまたはディレクトリをロックする方法はありますか?

私たちは同じ製品に取り組んでいる60人以上の開発者のチームであり、SVNからGitおよびGitHubに移行しています。 SVNには、個々のファイルがロックされているプロセスがあり、開発者がコードをコミットしたいときはいつでも、ファイルの所有者がロックを解除する必要があります。私たちのうち3人が合計150以上のファイルの所有者です。ロック解除の前にコードレビューが行われます。

Githubでは、Fork-Cloneモデルを使用することを計画しています-開発者のグループが取り組んでいる各プロジェクトはフォークを行い、各開発者はフォークのクローンを作成し、コードを記述してOriginにコミットします機能はアップストリームにプルリクエストを行います。

これは問題ないように見えますが、問題は大きなプロジェクトが配信されたときに、レビューのために多くの変更をもたらすため、ファイル所有者の負荷が増大することです。また、これは開発の後半のサイクルで発生する可能性があるため、プロジェクトが危険にさらされる可能性があります。

動作すると思われる1つの方法は、GitプッシュがOrigin(フォーク)に行われたときにフックを使用することです。上流への最後のレビューgit pullが1つあります。

ただし、同じものに対するgithub拡張機能またはプッシュフックは見つかりませんでした。 Githubでこれを行う簡単な方法(既存の拡張機能)がありますか、またはgitで使用するのと同じフックを使用する必要がありますか?

64
Karthick S

ファイルがマージ可能でなく、ロックする必要がある場合、偶然ではありません。GITの代わりに集中ソリューション、つまりSVNまたはClearCaseを使用してください。

84
user5694595

git LFS(GitHubなどの一部のgitホスティングプロバイダーでサポートされています)を使用している場合は、 ファイルロック を使用できます。

.gitattributesファイルを編集して、ファイルタイプをロック可能としてマークします。

*.docx lockable
# Make MS Word files lockable

そしてそれをロックします:

$ git lfs lock example.docx

git lfs unlock example.docxと他の誰かのファイルで--forceを追加すると、ファイルのロックを解除できます。

19
Nijin22

Gitは分散化されているため、ロック機能を提供しません。ただし、コードを GitLab Enterprise Edition Premium でホストしている場合、 Webインターフェースを使用して個々のファイルまたはフォルダーをロック を実行して、目的を正確に達成できます。

他の人のサーバー(彼らのWebサイト)でプロジェクトをホストしたくない場合は、GitLabをダウンロードして自分のWebサーバーでホストすることもできます。

3
Leonardo Torok

正確にロックするわけではありませんが、Githubは「 Code Owners 」という概念を導入しています。コードベースの一部を制限して、コード所有者によるレビュー後のコミットのみを許可できます。

3
Michael

これは可能です。 git-lfs 2.0には、ファイルをロックする機能が導入されています。次のリンクを参照してください: https://github.com/git-lfs/git-lfs/wiki/File-Locking 。この機能のサポートは、TFS 2017.2以降で利用可能です: https://docs.Microsoft.com/en-us/vsts/release-notes/

0
erradi mourad