77

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

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

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

私たちがうまくいくと思った方法の1つは、原点(フォーク)に対してgitpushが実行されたときにフックを設定することです。上流への最終レビューgitプルが1つある可能性があります。

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

4

7 に答える 7

96

ファイルがマージ可能でなく、ファイルをロックする必要がある場合は、GITの代わりに一元化されたソリューション(SVNまたはClearCase)を使用してください。

于 2015-12-18T09:58:30.357 に答える
41

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

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

*.docx lockable
# Make MS Word files lockable

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

$ git lfs lock example.docx

git lfs unlock example.docxを追加することで、他の人のファイルと一緒にファイルのロックを解除できます--force

于 2018-02-21T12:30:56.977 に答える
5

これは可能です。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/ 。

于 2019-04-23T12:42:56.747 に答える
3

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

于 2018-07-09T06:07:58.040 に答える
3

LFSを使用して個々のファイルをロックするか、代わりにファイルを.gitattributesファイルに追加します。

https://github.com/git-lfs/git-lfs/wiki/File-Locking

于 2020-05-10T17:00:52.020 に答える
2

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

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

于 2017-05-12T22:07:37.130 に答える
-27

このユースケースは、GitがSVNよりもはるかに優れている理由の1つです->リベース!優れたgitワークフローに従う場合は、プルリクエストを送信する前にアップストリームからリベースします。他の人のコミットやマージの競合などでファイルのロックや踏みつけを心配する必要はありません...リベースは作業を脇に置き、リモートコミットを適用してから、作業を上に適用します。

これには、プロセスを再考し、Gitの長所とGitの上にSubversionワークフローを強制的に適合させることに依存する必要があると思います。「フォーククローン」モデルも別の外観が必要になる場合があります。ほとんどの場合、すべての開発者が独自のフォークを持っています。必要に応じて、リモートを介してチーム間でリポジトリを共有できます。しかし、同じ起源を共有する貢献者は、いくつかの悪い習慣を設定します。

Gitflowは非常に人気のあるgitワークフローであり、Github自体にいくつかの優れたヒントがあり、ワークフローを共有しています

于 2013-02-13T22:10:08.010 に答える