Professionalバージョン管理の代替[非公開]


57

私たちは、プロジェクトの1つに貢献する必要がある非プログラマー(ライター)と協力しています。

現在、彼らは自分の作業をバージョン管理するためにGit(またはそのことは何でも)を使用するという考えを嫌っています。これは、バージョン管理のねじれた概念に頭を悩ませるだけの価値がないためだと思います。(私が最初にそれらをブランチとマージに紹介したとき-彼らは私がそれらを怒らせていたように見えました。)

今、私たちは彼らを教育したり、それを使うように説得する立場にはありません。私たちは、彼らのすべての作業をバージョン管理するための代替案を探しています(これが必要なものです)-彼らは簡単なワークフローを取得し、彼らの仕事に集中します。

私はいくつかのアイデアを思いつきました...

  • 自明ではない変更を行うたびに作業を個別のファイルとして保存するように指示し、変更を追跡するために差分を使用します。
  • CSSEditの「マイルストーン」を何らかの方法で実装するプログラムを(Pythonで)作成します。

プロジェクトについて:

これは自然言語処理システムです(C + Pythonで記述されています)。さまざまな言語でシステムの入力を準備するために、いくつかのライターを雇いました。そして、ソフトウェアを進化させると、それらのライターが入力(記事)を変更する必要があります。時々、変更は非常に小さい(1つか2つ)こともあれば、大きくなることもあります。

これらの変更をバージョン管理する必要があるのは、入力のあらゆる小さな/大きな変更がシステムの出力を劇的に変更する可能性があるためです。


15
@rwong-またはバージョン管理機能付きのWikiでも機能します。
ジョリスティマーマンズ

4
@MadKeithVコメントに加えて、gitで動くwikiはどうですか?github.com/github/gollum-ワークフローにいくつかの変更が加えられます。2つのチームを橋渡ししようとしています。現在のツールを調べましたか?そこでは、バージョン管理のいくつかの種類をサポートして小さな可能性がありますし、あなたの作家が...見つけるために迷惑を掛けたことがない
ヤニス

20
本当に簡単です。あなたがこれらの人々に支払いをしようとするなら、彼らがあなたのツールを使って支払いを受けることができるか、彼らがあなたのツールの使用を拒否した場合は支払いを受けないことを伝えてください。どんな中間点もあなたの側でより多くの仕事を意味します、それはお金がかかるので、それはあなたのツールで働く人々のグループを見つけることと釣り合います。
ラムハウンド

4
Fossilは、バージョン管理されたWikiにも付属する興味深いVCSです。ドキュメントを最新の状態に保つ方法として使用しましたが、このようなものを「バージョン管理」するために使用できます。
ベンブロッカ

34
なぜブランチを導入して非技術者にマージしようとしたのですか?あなたは彼らの作品をバージョン管理したいのです。どのように保存したいかを伝えることができます。あなたはそれらにブランチとマージを処理させたい、あなたは深い端から出ている。Tortoise *のように素敵で簡単なものを手に入れ、本当に必要のないものは何も言わないようにする必要がありました。
デビッドソーンリー

回答:


102

最初に分岐とマージを紹介したとき-彼らは私がそれらを怒らせていたように見えた

これはおそらく、分岐とマージが高度な概念であり、単に変更を追跡するよりも無限に有用性が低いためです。

それでは、なぜ「コミット」(保存)と「更新」だけを説明しないのですか?2つの本当にシンプルなコンセプト。10分以内に説明できると確信しています。

別々のブランチやそのようなものを本当に使用したい場合は、それらを関与させずに自分でその部分を行うことができます。


20
+1。それらの目的のために、単に直線的な履歴を保持することは、急進的でゲームを変える概念です。筆者が分岐とマージを本当に必要とすることはまずないと思います。もしそうなら、開発者がそれを管理している間保持するために開発者の手を必要とするでしょう。
ダン・レイ

7
@BillK、実際にgitとマージしようとしましたか?SVNを使用するよりもはるかに良好に機能すると思います。(ただし、必要のない場所でマージを使用することは
推奨して

10
@Bill K正直なところ、これはあなたがSVNで20年後に追いつく必要があるように聞こえます(もしあれば)。これらのライターにとって分岐とマージは本当に意味をなさないかもしれませんが、レポを分岐することなく20年間どのようにプログラムできたのかわかりません。ブランチが良い習慣であり、あなたの人生を楽にする非常に多くのケースがあります。実際、この概念を盲目的に拒否すると、判断力が低下します(IMHO)。SVNでの分岐は苦痛でしたが、gitを使うと非常に簡単になりました。自分自身に感謝し、自我を乗り越え、午後に投資してgitの基本を学びましょう。あなたはそれを後悔しないでしょう、約束しました!
ロビン

6
@ user606723:TortoiseSVNとTortoiseGITは、Windowsシェル統合を提供します。
ロイティンカー

6
Gitの分岐と非技術者へのマージを教えることは、人権の侵害であると確信しています。
スティーブベネット

69

むしろ非正統的なアプローチは、単にDropboxを使用することです。作成者にファイルをdropboxディレクトリに保存してもらうと、無料でバージョン管理とバックアップを取得できます。さらに、基本的に著者には学習曲線はありません。

gitの場合、最終的には作成者に正しいブランチバージョンを提供することになりそうなので、ドロップボックスにgitリポジトリを置き、作成者の分岐とマージを処理するだけです。


21
私は同じことを提案しようとしていました。また、Dropboxのフォルダーをgitリポジトリにできず(知る必要がない)、定期的な(たとえば毎日の)コミットを実行できない理由はありません。そうすれば、すべての素敵なgitのもの(diff、log、bisectなど)を無料で入手できます。
サイモンウィテカー

4
有料版を使用していることを確認してください。無料版では、私が正しく覚えていれば30日以内のバージョンしか保存されません。
DMan

5
外部サービスを示唆し、単一障害点を導入し、ここに他の回答で示唆されている有用なソフトウェアがたくさんあり、関係者が明示的に提示されている場合、データを潜在的な侵入者に委ねる回答を-1することしかできません有能なプログラマーとして。
サムホセバー

4
@DavidThornley:Dropboxの実際のセキュリティ問題について聞いたことがない?
サムホセバー

3
@Sam Hocevar:OK、今私は持っています。これは4時間の脆弱性であり、確かに良くはありませんが、必ずしも悪い考えだというわけではありません。繰り返しますが、それは文章がどれだけ繊細であるか、そしてそれが部外者によって見られる可能性がわずかにあるかどうかに依存します。(明らかに医療記録には向いていませんが、悪いフィクションや未完成のソフトウェアプロジェクトをそこに残しておくことに何の不安もありません。)
デイヴィッドソーンリー

28

答えはあなたの編集の中にあります:「私たちはいくつかの作家を雇いました」-時にはあなたはただ血なまぐさいだけである...彼らはあなた欲しいものが不合理ではないという条件であなたがしたいことをしなければなりません

あなたが行う議論は、あなたが既に進めた議論です-製品を機能させるためにX、Y、Zを実行できるようにする必要があります- これを行うには、あなたがそれをする必要があります。私たちはできる限り支援しますが、これが機能するためには(したがって、それがあなたの収入源である作家として)それが起こらなければなりません。

適切なWikiベースのソリューションが適切なように見えることに同意する傾向がありますが、ここでの課題は、ワークフローと要件の間の妥協点を見つける方法です。

キーポイントを繰り返します-プロジェクトを成功させるには、記事をバージョン管理する必要があります。したがって、記事に取り組む人は合意されたルールに従ってプレイする必要があります。燃えたし、拡張により、ライターもそうです。


完全にあなたと同意します。しかし、私たち(プログラマーのチーム)とライターの間には、「管理」と呼ばれるものがあります。経営陣は作家を雇い、彼らと一緒に仕事をするように言った。彼らがバージョン管理の学習に消極的であるという事実は、経営者が私たち(チーム)と彼ら(プログラマー)の間で問題を「調整」する必要があると考えるものです。
ツリーコーダー

1
私はちょっと推測しました...しかし、あなたは経営陣にあなたの主張をしなければなりません、そしてそれは同じです。彼らは「調整」する必要のあるもの(言葉の興味深い選択)であることは正しいです-しかし、妥協は2つの方法です。
マーフ

イェイ-説明のないダウン投票、常にそれらのように。
マーフ

2
@greengitチーム間で「調整」する必要がある問題は、管理の目的の一部です。責任を1つのチームに委任することは怠laであるか、または経営陣がそのチームのアプローチを好むというヒントのいずれかです。そのため、あなたにとってより意味のあるソリューションを管理者に提案し、他のすべてのことを心配させてください。
ヤンニス

3
私は、これらの「調整」を、提案された変更の予算の形で経営陣に提示する傾向があります。「もちろん、彼らの使用を避けることができます(git、…)。彼らのために秘書を雇う必要があります。ここにサインして、月曜日にインタビューを開始します。」
BRPocock

18

以前、このような状況に対処する必要がありました。最終的に、1人の開発者(私)をサードパーティのバージョン管理連絡先として指定しました。

サードパーティは、毎日プロジェクトファイルのzipファイルを電子メールで送信し、私はそれらのチェックインを行います。別のプロジェクトワークスペースとsvnアカウントをセットアップし、ファイルをそのワークスペースに解凍し、そこにあったものを上書きしてから、そのアカウントでチェックインを行います。

毎日しなければならないのは楽しいことではありませんでしたが、仕事を終わらせることがより重要な場合もあります。

1つのプラスは、ビルドを壊すような悪いコードやデータをチェックインしていないことを確認するために作業をレビューするのに役立ちました。


+1それが可能であれば、「問題解決!」わたしたちのため。それは私たちが小さな会社だからではなく、このタスクのために1人の開発者を部分的または単独で節約することを提案することで、(ばかげた)管理から笑顔が返ってくるとは思わないからです。実際、私たちの経営についてはそう感じています。
ツリーコーダー

2
@greengit-これがあなたがうまくいくと思う唯一の解決策であると提案するなら、費用は管理者があなたのツールで働く異なる人々を雇うことを強制します。もちろん、バージョン管理以外のソリューションは、回避策によって発生した問題を回避する(および解決する)か、問題を防ぐために余分な時間を費やす(これらの重要な点の両方を無視しない限り) 、問題が発生しますが、実際には問題は発生します)。
ラムハウンド

3
@greengitプロセスに関係するものに依存することは明らかですが、私の場合、サードパーティのファイルをチェックインするのに1日5分もかかりませんでした。これは、プロセスを開発し、その上でサードパーティをトレーニングしようとする時間を無駄にするという私のソリューションでした。
アランバーバー

そんなに難しくないはずです。1人は、ライターからバージョン管理システムへのインターフェースです。彼らはすべての変更を彼に提出することを知っています。変更を適切な場所にドロップしてコミットするのに1〜2分以上かかることはありません。
ダン・レイ

@greengit-これが私の答えになるだろう。ええ、役に立つ仕事をするのに時間がかかります。カスタムシステム(あなたがやりたがっているように見える)の作成には、さらに時間がかかります。そして、作家はまだ文句を言うでしょう。
マイクバランチャック

18

SparkleShareはgitベースのdropbox -cloneです。ニーズに合っていると思います。

SparkleShareは、コンピューター上に特別なフォルダーを作成します。リモートでホストされているフォルダー(または「プロジェクト」)をこのフォルダーに追加できます。これらのプロジェクトは、誰かがファイルを追加、削除、または編集したときに、ホストとすべてのピアとの同期が自動的に維持されます。

...スマイリーフェイスでうまく機能するかどうかの例をいくつか示します。

すばらしいです

  • テキスト、オフィス文書、画像などの頻繁に変更されるプロジェクトファイル
  • 複数の人が編集したファイルの追跡と同期
  • ファイルを履歴の任意の時点に戻す
  • 暗号化を使用してサーバー上のファイルをスパイするのを防ぐ

それほど大きくない

  • フルコンピューターバックアップ
  • 写真や音楽のコレクションを保存する
  • ビデオ編集プロジェクトなど、頻繁に変更される大きなバイナリファイル...

更新(2015年11月):プロジェクトは中止されたようです(2014年4月からの最終リリース)。


非常に有望ですが、多分少し未熟です。しかし、私は間違いなくこれに注目し続けます。
ゾルトTörök

13

準備されたワークスペース透過的な VCS使用を提供できる場合、VCSを使用します。プログラマー以外の人にVCSをプログラマーのやり方で使うように教えないでください

組み込みのVCSサポートを備えたエディターを見つけて、それを構成し、作業中の追加の簡単なステップを示すだけです

ほんの一例-EditplusはSubversionを認識しており、エディターウィンドウ内で基本的なSVN操作を実行できます。最新のEditplusでもGit統合にTortoiseGITを使用できます

編集:何らかの代替ソリューション:EasySVNを見つけました。これは、適切に構成され、作業コピーを監視し、自動コミットと自動マージを実行し、エンドユーザーおよびドキュメントの形式に対してオーサリングツール使用できます。


11

WebDAVのセットアップはどうですか?

それらの直線バージョン管理履歴を自動的に処理します。ネットワークドライブであるかのようにサーバーに接続するだけで、すべての保存がコミットされます。


WebDAVの場合は+1。本当にそのオプションについては考えませんでした。あなたはそれがWebDAVサーバー(+ワークフロー)を展開し、維持することでどのように難しいと思います
treecoder

それは本当に簡単で、Apache、Subversion、Repoをセットアップします。次に、apacheモジュールをインストールして構成し、すべて完了です。
マルフィスト

-1。「自動的に」は単語ではないため。
dreftymac


1
たぶん、この答えをより明確にすることができます:サーバー上でSubversion + Apache + WebDAVをセットアップし、非開発者クライアントからWebDAV共有をマウントします。少なくとも1日に1回、WebDAV共有で作業を保存するようユーザーに指示します。
1

7

Googleドキュメント

Google Docsはあなたが望むことをするかもしれません。File > See Revision History変更を追跡できます。

また、無料でファイルをやり取りする問題もあります。ドキュメントを全員で共有するだけです。

最後に、使いやすいです。ライターはバージョン管理が行われていることを知る必要さえありません。


6

OSに依存しない

そのプログラムは、その後行うことができます、あなたが上にファイルをドラッグ&ドロップすることができますPythonプログラムを書くgit addgit commit、何ていないと、彼らはそれに対処する必要はありません。

または

WebDavベースのファイルシステムを使用して、自分のマシンにマウントし、サーバーにgit透過的に処理させることができます。

OSX / Linux

ファイルを取得してgitにコミットするPythonベースのFUSEプラグインを作成します。その後、マウントされたファイルシステムを透過的に開いて保存できます。Windowsリソース用のFUSEがいくつかありますが、それらはおそらくだまされる価値さえありません。

FileSystem Filter Driversを使用して透過的に処理するコードを作成できますgit


5

ああ、非コーダーのいじめの喜び。git / mercurial環境をセットアップすることをお勧めします。リポジトリが処理できる形式ですべてを保存するように伝えます。tortoisegitまたはTortoiseHgの、彼らがする必要はありません知っているレポがどのように機能しますか。プロジェクトディレクトリに感嘆符があるかどうかを確認し、問題のファイルを右クリックして[コミット]をクリックします。変更の概要を書きます(彼らは作家ですか?)。完了です!

彼らのためのワークフローの追加ステップですが、マージ/ブランチ/クールなものについては何もありません。事前に構築された環境はすでにwritersブランチに設定されているため、コードは表示されません。毎日自動でスクリプトを同期させます。後で、コミットに慣れたら、追加の機能を表示できます。いつ変更されたかを確認する機能は非常に便利であるため、ワークフローに潜入すると、それなしでは実行できません。


5
私が気づいたことの1つは、すべての(YMMV)非技術的ライターが、変更を加えた後は、以前の作品を役に立たないと見なすことです。彼らは、更新された作品(記事または彼らが書いたもの)が最良であり、過去のバージョンを保持するのは愚かなことだと考えています。私たちのケースでは、少なくとも歴史も必要な理由を少なくともうまく説明しました。
ツリーコーダー

おそらく@greengit。経営陣にどのように対応しているか、このシンプルで簡単なステップがどのように役立ち、これが会社のお金をどのように節約/稼ぐかを実証すると、彼らはとにかくそれをしなければなりません。ビジネスは収益に左右されるため、上司に、ライターを技術パイプラインに統合し、統合コスト、バックアップ(レポジトリをバックアップしているのですか?)、および情報の受け渡しを節約することを伝えます。
スペンサーラスブン

+1また、TortoiseSVNを使用するためにプロジェクトコーディネーターと顧客サービス担当者を設定しました。最初の説明(および初期チェックアウトの支援)の後、変更されたバージョン(ほとんどがオフィス文書とモックアップの画像)のコミットに問題はありませんでした。彼らは、同僚が何かを変更した場合、自動的に最新バージョンを取得することさえ気に入っていました。
sleske

3

共有ポイントはどうですか?開発の世界では人気がないことを知っていますが、ライターがOSとしてWindowsを使用している場合、それはうまく機能し、バージョン管理を使用していることを本当に知りません(私の仕事には大きなプラスです)。

また、このソリューションは、彼らが新しいものを巧みに操っているかのように、彼らを大いに怖がらせるものに対処することを防ぎます。


これは私たちのチームがすでに行っていることであり、機能します。
sq33G

SharePointに新しいバージョンをアップロードするにはより多くの作業が必要になるため、私たちの会社のドキュメントの一部であるSharePointに適切なバージョン管理システムを使用することを好みます。
クリスモーガン

2

ライターがファイルを保存しているファイルシステムを監視し、保存するたびに自動コミットを実行するツールをセットアップできますか?

ネットワーク共有に配置すると、すべての構成を実行できますが、まったく関与しません。ただし、チームが使用する更新バージョンを提供するたびにgitに追加されます。


1

Plastic SCMを見ましたか。彼らはそれを使用することをより簡単にしようとしている

バージョン管理されたバックアップだけが必要な場合は、Dropboxを使用するか、Windowsバックアップサービスをセットアップできます。または、Crashplanまたは別の同様の製品をインストールできます。


+1 DVCS領域での新しい商用製品を教えてくれたために
ローランドテップ

1

Mercurial DVCSには、EasyMercurialと呼ばれるユーザーインターフェイスがあり、その目的は明示的に基本的なバージョン管理操作の簡単なビューを提供することです。

EasyMercurialの目的は次のとおりです。

  • 履歴グラフ表現を使用して、実際のリポジトリの状態を示す簡単な教育と学習
    • プラットフォーム間で一貫性のあるMercurialの通常のコマンドラインワークフローに明らかに近い

いずれかの目的のために「最高の」Mercurialクライアントを作成しようとはしていません。ニーズの変化に応じて、ユーザーが他のクライアントに移行することを積極的に奨励しています。目的は、共有リモートリポジトリで作業する小さなプロジェクトグループの初心者向けの何かを提供することです。

試してみることをお勧めします。


1

私は非プログラマーと何度も仕事をしなければなりませんでした(ほとんどがグラフィックアーティストであり、作家がアーティストと同じように作業ファイルを管理する方法がほとんどわからない場合は... 。)。3つの可能なアプローチがあります。

  1. 彼らがプログラマーのふりをして、バージョン管理の使い方を教えてください。これは機能せず、絶えず戦います。
  2. 必要に応じて昨日のファイルに巻き戻せるように、現在のバージョンを取得してどこかに貼り付けるだけの非常にシンプルなツールを作成します。これは可能であり、私はこれを何年も前にDVDクリエーター(メニュー、グラフィックス、あらゆる種類のものを作成する)のチームのために行いました。私が書いたツールはPkZipのワンクリックラッパーでしたしばらく前)、作業ディレクトリを圧縮して、日付と時刻のアーカイブに名前を付けました。
  3. 彼らが自分で作り出すものをコントロールしてください。それらのファイルをプログラマーに配信し、プログラマーがファイルを受け入れた場合にのみプロジェクトの一部になる必要があることを明確にしてください。プログラマーはそれらをバージョン管理にチェックインし、コンテンツは専門的な方法で管理されます。

個人的には、オプション3を使用する方法だと思います。これは、ファイルの配信を受け取ってチェックインする必要がある人にとっては多少の痛みと苛立ちを意味しますが、他のオプションよりもずっと少ないです。

また、プログラマではない人が、あなたが考えることができる古いファイル名のファイルを配信することに注意してください。命名規則は奇妙なことに異質です。彼らはあなたに「Picture」または何かと呼ばれるファイルを提供し、それからあなたが彼らにそれが間違っていることを伝えると、あなたに「Picture_Final」と呼ばれるファイルを提供します。これを指摘すると、「Picture_NewFinal」と呼ばれる別のファイルを取得し、(幸運なら)「Picture_NewFinal2」を取得します。事」。

繰り返しますが、命名規則の実施を試みることができます。これは、すべてのファイルが呼び出されることを事前に伝えることを意味します。ここで、とにかく自分の正気のためにスプレッドシートが欲しいと言うので、彼らにそれに従うようにしてください:彼らがそうでないときでも驚かないでください。

お役に立てば幸いです!


0

2人が同時に同じターゲットで作業する必要がある場合、およびテキストファイルですべての作業を処理できる場合は、Googleドキュメントを共有してみます。

素晴らしいマルチエディター/コラボレーション機能を備えています。これまで見た中で最高です。また、これらはフルバージョン化されており、テキストファイルとしてエクスポートできます。

しかし、これらは2つの非常に大きなifです。


0

通常どおりファイルを保存し、フォルダ内で動作させます。

1日1回(または1週間など)、そのフォルダーの内容をbackup_dd_mm_yyyyにコピーします。ほとんどのシステムのソースコードは、最近使用可能なスペースを考えると、取るに足らないスペースを占有します。

コピーは、あなた、彼ら、第三者、ツール、またはスクリプトのいずれかで行うことができます。

これは、損失を1日に制限し、履歴を与え、それらに対して透過的です。

どちらの当事者にとっても完璧ではありませんが、妥協点を探そうとする答えです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.