专业版本控制的替代方法


57

我们正在与一些需要为我们的项目之一做出贡献的非程序员(作家)合作。

现在,他们只是不喜欢使用Git(或与此相关的任何东西)进行版本控制其工作的想法。我认为这是因为他们只是觉得不值得把头放在版本控制的扭曲概念上。(当我第一次向他们介绍分支和合并时-他们看起来像是冒犯了他们。)

现在,我们无法对他们进行教育或说服他们使用它。我们只是在尝试寻找替代方案,以便我们对他们的所有工作进行版本化(这是我们所需要的),并且他们可以轻松地进行工作流并专注于自己的工作。

我想出了一些主意...

  • 告诉他们每次进行不重要的更改时都将工作另存为单独的文件,然后在我们这边使用diff来跟踪更改。
  • 用Python编写一个以某种方式实现CSSEdit中“里程碑”的程序。

关于该项目:

它是一种自然语言处理系统(用C + Python编写)。我们已经聘请了一些作家来用不同的语言为系统准备输入。随着软件的发展,我们需要那些作者来更改他们的输入(文章)。有时变化很小(一两个字),而其他时候变化很大。

我们需要对这些更改进行版本控制的原因是,输入中的每个小/大更改都有可能显着更改系统的输出。


15
@rwong-或带有版本控制的Wiki,也可以使用。
Joris Timmermans

4
在@MadKeithV评论中添加内容,由git驱动的Wiki如何?github.com/github/gollum-将对工作流程进行一些更改,您正在尝试桥接两个团队。您是否浏览过他们当前的工具?有他们支持某种版本控制的可能性小,你的作家从来没有费心找出..
雅尼斯

20
真的很简单。如果您要向这些人付款,请告诉他们他们可以使用您的工具并获得报酬,或者如果他们拒绝使用您的工具则不会获得报酬。任何中间立场都将意味着您需要做更多的工作,因为这要花钱,因此可以平衡找到一组可以使用您的工具的人员。
Ramhound 2011年

4
Fossil是一个有趣的VCS,还附带一个版本化的Wiki。我们使用它作为使文档保持最新状态的一种方法,但是您可以使用它来“版本化”这样的事情。
Ben Brocka

34
您为什么要尝试引入分支机构并与非技术人员合并?您希望他们的工作版本化,很好。您可以告诉他们如何保存它。您想让他们处理分支和合并,那么您将陷入困境。您应该给他们一些好玩的东西,例如Tortoise *,并避免告诉他们真正不需要的任何东西。
David Thornley

Answers:


102

当我第一次向他们介绍分支和合并时-他们看起来像冒犯了他们

这可能是因为分支和合并是高级概念,并且比简单地跟踪更改无限有用。

那么,为什么不仅仅解释“提交”(保存)和“更新”呢?两个非常简单的概念。我相信您可以在不到10分钟的时间内完成解释。

如果您真的想使用单独的分支和类似的东西,则可以自己完成此部分,而无需让它们参与其中。


20
+1。就他们的目的而言,仅保留直线历史是一个激进且改变游戏规则的概念。我认为作家不太可能真正需要分支和合并,如果确实需要,则在开发人员进行管理时,他们需要握住开发人员的手。
丹·雷

7
@BillK,您是否真的尝试过与git合并?我认为它工作得很好,比使用SVN更好。(不过,我不主张在不需要的地方使用合并。)
svick 2011年

10
@Bill K老实说,听起来您在使用SVN 20年后(即使是偶数)也需要做一些追赶。分支和合并对于这些作者而言可能确实没有意义,但是我不确定您如何在没有分支回购的情况下成功编程了20年。在很多情况下,分支机构是一种很好的做法,可以减轻您的生活;实际上,盲目拒绝该概念表明判断力很差(IMHO)。在SVN中,分支是很痛苦的,但是有了git,事情就变得很容易了。帮自己一个忙,克服自我,花一个下午学习git的基础知识。答应你,你不会后悔的!
罗宾

6
@ user606723:TortoiseSVN和TortoiseGIT提供Windows Shell集成。
罗伊·廷克

6
我非常确定,尝试教Git分支并与非技术人员合并是对人权的侵犯。
史蒂夫·贝内特

69

一个非常不合常规的方法就是使用Dropbox。让作者将文件保存在Dropbox目录中,即可免费获得版本控制和备份。此外,作者基本上没有学习曲线。

对于git来说,听起来好像最终还是要为作者提供正确的分支版本,所以只需将git repo放入dropbox并为作者处理分支和合并。


21
我打算建议同样的事情。没有理由不能同时将Dropbox中的文件夹设为git repo(它们不需要知道)并进行定期(例如每天)提交。这样,您就可以免费获得所有不错的git东西(diff,log,bisect等)。
西蒙·惠特克

4
请确保您使用的是付费版本,因为如果我没有记错的话,免费版本只能保存版本约30天。
DMan 2011年

5
当这里的其他答案中建议使用的软件如此之多,并且涉及的各方被明确提出时,我只能对建议外部服务,引入单点故障并将您的数据置于潜在入侵者摆布的答案进行-1回答。作为有能力的程序员。
sam hocevar

4
@DavidThornley:您还没有听说过Dropbox实际安全问题???
sam hocevar

3
@Sam Hocevar:好的,现在有。那是四个小时的漏洞,肯定不好,但这并不一定意味着它是一个坏主意。同样,这取决于写作的敏感程度,以及能否被局外人看到的可能性很小。(这显然不适合医疗记录,但我对在这里留下虚构的小说和未完成的软件项目
不满

28

确实,答案就在您的编辑中:“我们已经聘请了一些作家”-有时您只需要血淋淋的头脑……他们想要您的钱,他们必须做想做的事,前提是您想要的事不是不合理的。

您提出的论据就是您已经提出的论点-我们需要能够执行X,Y和Z才能使产品起作用- 为了做到这一点,我们需要您这样做。我们将尽我们最大的支持,但是要使此工作奏效(并因此使其继续作为作家的收入来源),就必须做到这一点。

我倾向于同意,合适的基于Wiki的解决方案似乎是不错的选择-但是这里的挑战是如何在他们的工作流程和您的要求之间找到折衷方案。

我将重复关键点-为了使您的项目成功,您需要对文章进行版本控制,因此从事文章工作的人员必须遵循一套约定的规则,如果不这样做,您获得被烧毁,作家也将被烧毁。


我完全同意你的看法。但是您会看到我们(程序员团队)和作家之间存在一种称为“管理”的东西。管理层聘请了作家,并告诉我们与他们合作。他们不愿学习版本控制这一事实是管理层认为是我们(团队)和他们(程序员)之间“调整”的问题。
treecoder 2011年

1
我有点...测...但是然后您必须将案例提交给管理层,并且情况相同。他们是对的,它需要“调整”(有趣的单词选择)-但是妥协是两种方式,您必须给他们一些可以使用的东西,他们必须使用它。
Murph

没错-投票表决毫无解释,总是那样。
Murph

2
@greengit团队之间需要“调整”的问题是管理目的的一部分。将责任委派给一个团队要么是懒惰的,要么暗示管理层更喜欢该团队的方法。因此,我建议您建议管理对您更有意义的解决方案,并让他们担心其他所有问题。
yannis 2011年

3
我倾向于以预算的形式向管理层提出这些“调整”,以进行其拟议的变更。“当然,我们可以避免使用(git,...)。我们需要雇用一名秘书为他们做。在这里签名,我将在星期一开始采访。”
BRPocock 2011年

18

我以前不得不处理过类似的情况。最后,我们只指定了一个开发人员(我)作为第三方的版本控制联系人。

第三方每天都会通过电子邮件将其项目文件的zip文件发送给我,我会为他们办理登机手续。我为它们设置了一个单独的项目工作区和svn帐户,然后将文件解压缩到该工作区中,覆盖那里的内容,然后在该帐户下进行签入。

并不是每天要做的最有趣的事情,但是有时候完成工作更重要。

一加是,它确实帮助我检查了他们的工作,以确保他们没有检查会破坏构建的错误代码和数据。


+1如果可能的话,那就是“问题解决了!” 为了我们。这并不是因为我们是一家小公司,而且我不认为建议部分或全部留出一名开发人员来完成此任务将使(愚蠢的)管理者感到不满。真的,我对我们的管理层有这种感觉。
treecoder 2011年

2
@greengit-如果您建议这是您认为唯一可行的解​​决方案,那么成本将迫使管理人员雇用其他人员,他们将使用您的工具。当然,您可以向管理人员解释,除了版本控制之外,任何解决方案都将花费您的钱,要么解决因解决方法而产生的问题(并解决它们),要么花费额外的时间来尝试解决问题(除非您忽略了这两个关键点) ,问题就会发生,实际上无论如何都会发生)。
Ramhound 2011年

3
@greengit显然,这将取决于您的流程中涉及的所有内容,但就我而言,每天花不到5分钟的时间来检查第3方文件。这是我解决浪费时间尝试开发流程并培训第三者的解决方案。
艾伦·巴伯

不应该那么难。一个人是从作者到版本控制系统的界面。他们知道将所有更改提交给他。不应让他花费一两分钟以上的时间来放下更改并提交。
丹·雷

@greengit-这将是我的答案。是的,要花很多时间才能做有用的工作。编写自定义系统(您似乎很想这样做)将花费更多时间。而且作家仍然会抱怨。
Mike Baranczak 2011年

18

SparkleShare是一个基于git的dropbox-clone,我认为它适合您的需求。

SparkleShare在您的计算机上创建一个特殊的文件夹。您可以将远程托管的文件夹(或“项目”)添加到此文件夹。当有人添加,删除或编辑文件时,这些项目将自动与主机和您的所有同级保持同步。

...这是一些笑脸效果很好和不好的例子:

  • 经常更改项目文件,例如文本,Office文档和图像
  • 跟踪和同步多人编辑的文件
  • 将文件还原到历史记录中的任何位置
  • 使用加密防止监视服务器上的文件

不太好

  • 完整的计算机备份
  • 存储您的照片或音乐收藏
  • 大型二进制文件经常更改,例如视频编辑项目...

更新(2015年11月):该项目似乎已被放弃(2014年4月以来的最新版本)。


非常有前途,但可能还不成熟。我绝对会留意这一点。
ZsoltTörök

13

如果您可以为准备好的工作空间提供透明的 VCS使用,则他们将使用VCS。不要教非程序员以程序员的方式使用VCS

只需找到具有嵌入式VCS支持的编辑器,对其进行配置并显示其工作中的其他简单步骤

仅举一个例子-Editplus了解Subversion,具有在编辑器窗口内执行基本SVN操作的能力。最新的Editplus甚至可以使用TortoiseGIT进行Git集成

编辑:找到了一种替代方法:EasySVN,经过适当配置,可以监视工作副本并执行自动提交和自动合并,从而允许将任何创作工具用于最终用户和任何文档格式


11

设置WebDAV怎么样?

它将自动处理它们的直线版本控制历史记录。他们所要做的就是连接到服务器,就像它是网络驱动器一样,每次保存都将是一次提交。


+1用于WebDAV。真的没有考虑过那种选择。您认为部署和维护WebDAV服务器(+工作流程)有多困难
treecoder

这非常简单,您可以设置apache,subversion和repo。然后,您安装apache模块并对其进行配置,就完成了。
Malfist 2011年

-1是因为“自动”不是一个词。
dreftymac 2011年


1
也许,您可以使这个答案更明确:在服务器上设置Subversion + Apache + WebDAV并从非开发人员客户端挂载WebDAV共享。告诉用户至少每天一次保存他们在WebDAV共享上的工作。
1

7

谷歌文档

Google文档可能会做您想要的。File > See Revision History将让您跟踪更改。

您还遇到了免费来回处理文件的问题。只需在所有人之间共享文档即可。

最后,它很容易使用;作者甚至不必知道正在发生版本控制。


6

与操作系统无关

编写一个Python程序,您可以将文件拖放到该程序上,然后该程序就可以执行git addand git commit和and什么操作,而他们永远不必处理它。

要么

使用基于WebDav的文件系统,您可以将其安装在其计算机上,并让服务器git透明地执行操作。

OSX / Linux

编写一个基于Python的FUSE插件,该插件获取文件并将其提交到git。然后,它们可以透明地从挂载的文件系统打开并保存。Windows资源有一些FUSE,但它们甚至可能不值得一试。

视窗

您可能会编写一些代码来使用FileSystem Filter Drivers透明地完成git这些工作。


5

啊,非编码者们的欢乐正在酝酿之中。我建议为他们建立一个git / Mercurial环境。告诉他们以仓库可以处理的格式保存所有内容。使用tortoisegittortoisehg,他们不需要知道回购的工作方式。他们只是检查项目目录中是否有惊叹号,右键单击有问题的文件,然后单击提交。输入变更摘要(他们是作家,对吧?),您就完成了!

他们的工作流程又迈出了一步,但没有涉及合并/分支/酷的东西。预先构建的环境已经设置为在writers分支中,因此他们看不到代码。让脚本每天自动同步它们。以后,在习惯了提交之后,您可以他们展示额外的功能。看到何时更改的功能非常有用,一旦您将其潜入他们的工作流程中,他们将无法做不到。


5
我已经意识到的一件事是,所有(YMMV)非技术作家一旦对其进行了任何更改,都只会认为他们以前的作品无用。他们认为更新的作品(文章或他们写的任何东西)是最好的,并且保留其过去的版本是愚蠢的。尽管就我们而言,我们至少已经成功地向他们解释了为什么我们也需要历史。
treecoder 2011年

@greengit。如果您演示如何使他们适应管理,这个简单的步骤如何为您提供帮助,以及如何为公司节省/赚钱,那么他们将仍然必须这样做。业务是由底线驱动的,所以告诉老板,这可以将编写者集成到技术管道中,并节省集成成本,备份(您正在备份存储库,对吗?)和信息传递方面的成本。
Spencer Rathbun

+1我们还设立了项目协调员和客户服务人员来使用TortoiseSVN。经过最初的解释(并帮助他们完成初始结帐),他们毫无疑问地提交了更改的版本(主要是办公文档和样机图像)。他们甚至喜欢如果同事更改了某些内容,便会自动获得最新版本。
sleske 2011年

3

共享点呢?我知道它在开发世界中并不流行,但是如果您的作家使用Windows作为操作系统,它将运行良好,并且他们真的不会知道他们正在使用版本控制(这对我的工作来说是一个很大的优势)。

这种解决方案还使他们无法处理会使他们感到恐惧的任何事情,因为他们似乎是新事物的ski子。


+1,因为这是我们团队已经在做的事情,并且有效。
sq33G 2011年

我更喜欢在SharePoint上使用适当的版本控制系统,因为我们需要一些公司的文档,因为将新版本上载到SharePoint需要更多的工作。
克里斯·摩根

2

您是否可以设置一个工具来监视编写器保存文件的文件系统,并在每次保存时自动进行提交?

如果将其放在网络共享上,则可以进行所有配置而完全不涉及它们。但每次他们提供更新版本供您的团队使用时,都会为您添加到git中。


1

您看过塑料SCM吗?他们正在尝试使其更易于使用

如果只需要版本备份,则可以使用Dropbox或设置Windows备份服务。或者,您可以安装Crashplan或其他类似产品。


+1为我指出DVCS领域中的新商业产品
Roland Tepp

1

对于Mercurial DVCS,有一个名为EasyMercurial的用户界面,其明确的目标是明确提供基本版本控制操作的简单视图。

EasyMercurial旨在:

  • 使用历史记录图表示法,易于指示和学习指示实际存储库状态
    • 跨平台的Mercurial明显接近正常的命令行工作流程

我们并非试图出于任何一种目的而产生“最佳” Mercurial客户。我们积极鼓励用户随着需求的发展而转向其他客户。目的只是为使用共享远程存储库的小型项目组的初学者提供可访问的内容。

我建议尝试一下。


1

我不得不与非程序员合作过很多次(大多数是图形艺术家,如果您的作家像艺术家一样不懂如何管理工作文件的线索,那么您会感到...很有趣.. )。有三种可能的方法:

  1. 假装他们是程序员,请尝试教他们如何使用版本控制。这将无法正常工作,您将不断战斗。
  2. 给他们写一个非常简单的工具,该工具可以抓取当前版本并将其粘贴到某处,以便在必要时可以倒带到昨天的文件。这是有可能的,很多年前,我为一组DVD创作者(制作菜单,图形,各种事物)做到了这一点,并取得了一些成功:我编写的工具是PkZip的一键式包装器(您可以看到这是不久前),它只是压缩了工作目录,并命名了档案的日期和时间。
  3. 控制他们自己生产的东西。明确说明它们的文件必须交付给程序员,并且仅在程序员接受文件时才成为项目的一部分:然后,程序员将它们检入版本控制,并以专业的方式管理内容。

我个人认为方案3是可行的方法。这意味着无论谁必须接受文件交付并进行签入,都会有些痛苦和烦恼,但这种方式比其他任何方式都少。

我还要说的是,请注意,非程序员会提供您想到的任何旧文件名的文件。命名约定奇怪地与它们无关。他们会给您一个名为“ Picture”的文件或类似的东西,然后当您告诉他们有问题的地方时,会给您一个名为“ Picture_Final”的文件,该文件仅能纠正大约3个故障。当您指出这一点时,您将得到另一个文件“ Picture_NewFinal”,然后(如果您幸运的话)“ Picture_NewFinal2”,尽管此时他们可能会抛弃任何历史发展的感觉,并将其命名为“ Spanner Icon”。事情”。

同样,您可以尝试强制执行命名约定,这意味着可以提前告诉他们每个文件的名称,或者您可以花几个小时来整理和重命名它们发送给您的内容。在这里,我想说的是,无论如何您都希望电子表格具有自己的理智,因此请让他们遵循它:只是在不这样做时不要感到惊讶。

希望能有所帮助-玩得开心!


0

如果他们中的两个有可能需要一次在同一个目标上工作,并且您可以用文本文件处理他们的所有工作,那么我将尝试使用共享的Google文档。

它具有强大的多编辑器/协作功能-迄今为止,这是我见过的最好的功能。它们也是完整版本,可以导出为文本文件。

但是,这是两个相当大的假设。


0

让他们在文件夹中工作,照常保存文件。

每天一次(或每周一次)将该文件夹的内容复制到backup_dd_mm_yyyy。鉴于这些天可用的空间,大多数系统源代码占用的空间很小。

复制可以由您,他们,第三方,工具或脚本完成。

这将损失限制为一天,提供历史记录,对他们透明。

对于任何一方都不是完美的,但是寻求达到中间立场的答案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.