いつもお世話になっております!
またgitについて投稿させて頂きますッ‼m(_ _)m
eclipse マーズでegitで開発させておりますが、誰かがファイルを編集中なのを監視することは可能でしょうか?
(確かCVSやサブバージョンではあったような……)
開発者達がリモートリポジトリにpush漏れしていないか、を把握したいのが目的になります。
ご存じでしたら何卒ご教示のほど、よろしくお願い申し上げます。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答4件
0
「他の人の編集状況を確認したい」ということでしたら、gitの設計上不要なので不可能です。
そもそも、gitはSVNと違って分散型バージョン管理システムなので、つねに環境の全コピーがローカルマシンにある状態です。そして、push、fetch、pullといった明示的に同期を必要とする操作をのぞいて、変更はすべてローカルリポジトリに対して行うようになっています。ということで、いったんローカルリポジトリができてしまえば、回線が切れたとしてもローカルで編集を続けられますし、他の人が同じリポジトリにアクセスしてpushしたりも問題なく可能です。
gitは、最後に「複数の編集をマージしようとしたときに競合すれば、マージしようとしたときに調整すればいい」という立場に立っています。
git外の理由で「同じファイルの編集を制限・確認したい」ということでしたら、自前でgit外に用意するしかありません。
(補足)
「push漏れを防ぎたい」のであれば、「監視する」という後ろ向きな対策を取るのではなく、「pushにフックを仕掛けて、CIやビルド、デプロイを流すようにする」など、「pushしてしまえばすべてが進む」というような仕組みづくりをすることで「手動による反映をなくす」というのが最善策ではないかと思います。
投稿2016/11/20 11:13
編集2016/11/20 11:56総合スコア146543
0
基本的に出来ません。
というのもあまり良い方法と考えられていないからです。
CVSなどでは、ファイル単位に監視していましたが、影響範囲はファイルとは別の単位になるので結局マージの際には、それまで起こった変更が影響しないか変更の意味上に置いても確認する必要があります。変更対象のファイルをほったらかしの案件が取り上げたままになったりとあまりよくないことが起こっています。
そのため、3wayマージという行単位の変更取り込みを行い。2つの更新が同時に行われていても取り込めるようになっています。当然、取り込めたからバグが無いわけではなく、影響があるのならば修正が必要になります。しかし、この点はそもそも他の人の変更がファイル単位で監視できるCVSでも同じ事なのです。
gitはブランチを切ること、細かくコミットをすること、マージを簡単にすることで、互いの影響を減らすことを目指しています。
もう一度書きますが、ファイル単位では影響範囲を切り分けることができないので、ファイル単位で変更を追ってもしかたが無いのです。どうしても他人の変更が知りたければブランチを切って、細かくコミットしてもらいましょう。
投稿2016/11/20 11:33
総合スコア2884
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
ベストアンサー
Gitはファイルをロックする概念や、他人のファイルを監視する仕組みはありません。
その理由としてはいくつかあります。
- Gitはファイルのマージが得意で、Subversion等は絶望的に下手くそ
- Gitは分散リポジトリを良しとする文化で、コミット履歴を全てダウンロードして完全なクローンを生成して開発する、その後は完全なスタンドアローンでの開発となる
- Subversionはサーバーにリポジトリを置く設計なので、ローカルに持つのはタダのファイル
開発者達がリモートリポジトリにpush漏れしていないか、を把握したいのが目的になります。
その要望ですと、プルリクエストを使った開発をすれば解決しそうです。
手前味噌ですが、弊社で運用しているベストプラクティスにかなり近い運用を紹介します。
gitのbranch運用について
投稿2016/11/21 00:21
総合スコア21397
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
状態をみるのであれば、
$ git status On branch master nothing to commit, working directory clean
が一般的ですね。
追跡対象の場合は、
$ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: README Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: benchmarks.rb
とか。
投稿2016/11/20 10:23
総合スコア3774
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/21 12:58