Git
ポエム
VisualSourceSafe

VSSからGitに乗り換えてわかったGitのデメリット

話さないこと

  • Gitとは
  • VSSとは
  • 絶対こっちのほうがいいに決まってる!
  • Gitのここがよかった!(たくさん記事があると思うので今回は割愛します)

話すこと

  • VSSのここが恋しい!
  • 今後はVSS?Git?

前提

プロジェクト概要

  • 開発メンバー約6人
  • フレームワークは自社製のフレームワークを使用
  • 各プログラムから呼び出す共通のクラスファイルあり
  • 言語はC#
  • 開発ツールはVisual Studio
  • コードレビューする文化はあまりない(あってもGitは不使用で行う)
  • 単体テスト終えたら、コードレビューせずにmasterにマージする

お話の舞台

  • 工程は開発〜単体テストの部分のお話(現在進行中)

私のGit経験

  • Git経験9ヶ月
  • しかし今まで開発メンバーが自分だけのプロジェクトで使用していた
  • 複数人でGitを使用するのは初めて
  • 複数人ではVSSを使用した開発をしていた

開発メンバーのGit経験

  • 全員Git初心者
  • 私がGit操作など教えた
  • VSSユーザーからVSS非ユーザーまで

VSSからGitに乗り換えたきっかけ

プロジェクト開始時、普段使っていたVSSサーバーが死亡していたため、VSSを使用することはできない状況でした。
同時期に、私が別プロジェクトでGitを使用するということで、社内に新しくGitサーバーを立てました。
新しくGitサーバーができたということで、そちらを使用しようとなりました。

ちなみにGitサーバーは

  • オンプレで、社内ネットワークからのみ接続可能
  • GitBucketとPostgreSqlを使用
  • Windowsサーバー(OS失念)

なぜGitにしたかですが、私がGit信者だったからです。
Gitはナウい!サポート切れてない!
Git使っているとコミット履歴残るからいちいちコメントで修正前のコードを残さなくていい!
というミーハーな理由で社内サーバーにGitサーバーを構築しました。

ちなみに、Gitの前はAccuRevを使おうという動きがありましたが、ライセンス費の都合で、Gitになりました。

Git信者だった私ですが、いざ、Gitで複数人で開発していると、
Gitのデメリットが見えたので記事にしました。
そう、Git信者、目が覚めた。

Gitを使い始めて、VSSの恋しくなったところ

共通ファイルが常に最新になること

どのプログラムからも呼び出す共通クラスのファイルがあったため、非常に厄介でした。

  • 作業ブランチで共通ファイル編集してしまい、そのファイルだけmasterに反映させることができないため、ファイル単位でmasterにマージしたい!という要望多数。
  • わざわざ共通ファイル編集用ブランチ作成するのも面倒。
  • 誰かが共通ファイル編集したたびに、リベースするの面倒。
  • 共通ファイルのファンクション名変えたら悲劇。使ってるところ全部修正しないと……、面倒だな。

ということで、ゴリゴリに共通ファイルを編集する、開発〜単体テストの期間は、
Gitのような分散型ではなく、VSSのような集中型のほうがラクだなと思うようになりました。

学習コストが高い

あくまでツールだから、なるべく時間をかけずに使いこなせるようになりたいものですが、
Gitは使いこなせるまで時間がかかりました。

Git初心者の開発メンバーに教えていると、概念でつまずいたり、使い方でつまずいたりと、
つまずきポイントが多くて、同じ内容をいろんな人に教えることになりました。
って、これはGitが悪いのではなく、学習方法や指導方法が悪いのです。

まあでも、Gitに限らず、学習コストが高いものって避けがちです。
どれだけスマートに学習できるかの人間側の能力が試されてる気がします。

今後の運用

工程に合わせて使用する管理ツールを変えるのがベストかもと思いました。
移行の面倒さはありますが。

例えば、開発〜単体テストまでは中央集中型で、結合テスト以降をGitにすれば
両者のいいところが活かされるのでは?と思います。

とはいえ、私はまだまだGit初心者なので、 Gitだけでこの課題を解決できるGit運用の方法があるかもしれません、私が知らないだけで。
Gitの運用方法で回避している場合はコメントにてご教授いただければ幸いです。