适合程序员的linux版本_版本控制不仅仅适合程序员

适合程序员的linux版本

与其他艺术家和创意者一起工作时,当我查看他们的项目目录时,我总是感到惊讶-坦率地说,有些恐惧。 因此,它们经常被以相同名称开头但带有编号的文件所困扰 ,例如-v1-v2-v3-FINAL-v3-FINAL3v3-FINAL3-real-v3-FINAL5-please_will_it_ever_end , 等等。

甚至更令人惊讶的是,这些艺术家经常参与协作项目,其中一个以上的人可能会在很长一段时间内触摸同一文件(或一组文件)。 我经常问这些艺术家,“您是否考虑过为您的项目使用任何版本控制?”

我总是收到“什么是版本控制?”的响应。

艺术家的版本控制是什么?

我们生活在现代的时代,这些花哨的计算机设备可以帮助我们提高效率。 为什么世界上仍然有如此众多的人通过将数字和字母的顺序添加到文件末尾来“转换”文件?

在软件开发领域,我们的朋友已经以多种有趣的方式多次解决了这个问题。 简而言之,可以将版本控制与视频游戏中的“保存状态”进行比较。 您将对进度感到满意,并创建一个保存状态(版本控制中的提交 )。 从那里,您可以沿着当前路径继续前进,也可以通过签出其他路径( 分支 )来测试一个想法。 无论您采用哪种方式,都可以始终返回到先前的提交并从那里重新开始。 令人困惑的是,为什么在我们这些产生创意内容的人中,这些工具尚未得到更多的采用。 为此,我将简要介绍如何使用Mercurial进行多年。

水银

对于任何对版本控制软件(VCS)都不了解的人,第一个问题可能是:“为什么选择Mercurial ?” 的确,在开放和封闭的生态系统中,还有许多其他工具。 仅在开源方面,就有Subversion,Fossil(它具有内置的Wiki!),Bazaar和(可能是最受欢迎的VCS)Git。 在专有方面,有诸如Perforce和Alienbrain之类的产品。 甚至Dropbox也使您能够回滚到文件的早期保存。 那为什么是水星呢?

这是个人决定,因此我确定其他人可能会选择其他工具。 但是,以下是我的推理的简要概述:

  • 它不需要中央服务器。 Mercurial是所谓的分布式版本控制系统(DVCS)。 除其他外,这意味着所有版本控制都可以在您自己的计算机上本地完成。 因此,与Subversion甚至是Dropbox不同,您不必依赖于设置单独的服务器来存储项目文件的版本历史记录。
  • 它是多平台的。 遗憾的是,我与之合作的其他所有艺术家和创意并非都在开源操作系统上。 尽管大多数其他DVCS程序都具有带有命令行界面的端口,但Mercurial在TortoiseHg中具有非常成熟的图形前端。 我建议人们从命令行对Mercurial有一个很好的了解,但是许多艺术家确实欣赏一个很好的clicky界面...并且TortoiseHg中的历史视图非常令人愉快。
  • 它具有简单,易于理解的工作流程。 Mercurial没有Git获得的普及或几乎无处不在。 但是,至少对我而言,工作流程更加简单明了。 对于大多数创意者所做的工作类型而言,临时区域和历史可变性之类的功能通常不值得额外的程序开销。 记住要用有意义的提交消息进行显式提交(不用担心,我们很快会讲到这一点)已经比许多广告素材想要花费的精力更多。 暂存文件,或者对于Fossil,要确保存储库数据库已打开,这超出了我们想要(或需要)考虑的范围。

还有一些轶事证据表明,Mercurial可以更有效地处理二进制文件(例如图像和其他媒体文件,这是大多数创造性工作的Struts)。 另外,我在分布式版本控制方面曾经读过的最好的入门文章之一Joel Spolky的Hg Init )是针对Mercurial编写的。 当然,几乎所有版本控制系统都不一定设计成支持创意生产中典型的文件类型(大型二进制文件),并且有一些用于该系统的系统(称为数字资产管理软件或DAM)。 但是,根据我的口味,它们往往过于特定于特定的媒体或工作流样式。

因此,这就是我亲自选择Mercurial的原因。 就是说,在大多数其他系统中都有一个类似的过程,我将在这里进行描述。 因此,如果您更喜欢使用Git或Fossil,我说那太好了。 至少你在用东西 。 这使您领先于其他大多数广告素材。

开始之前

我将把安装Mercurial和TortoiseHg的过程留给他们的文档,以及您对自己的操作系统的了解。 但是, 一个必要的配置步骤,你需要创建的第一个项目库之前做。 您需要证明自己的身份。 请记住,Mercurial是一个分布式版本控制系统,旨在允许团队成员在同一项目上进行协作。 进行协作时,您需要一定程度的问责制。 您需要知道谁进行了哪些更改。 这样,您可以单独与该人联系以进一步了解更改。

设置身份非常简单。 在终端窗口中,您可以输入hg config -e 。 这将打开一个带有Mercurial配置文件的文本编辑器(通常在主目录中为.hgrchgrc 。在该文本文件中,输入以下内容(如果已存在,则对其进行编辑):



   
   
[ ui ]
username = Your Name <your@mail>

保存并关闭文件,就可以开始了。 当然,可以通过TortoiseHg( 文件设置全局设置提交 )以图形方式进行此操作,但是就像我说的那样,我建议您从命令行了解它的工作方式。 从图形的角度来看,它使您更有效。

Mercurial入门

好的,这么说来,这个版本控制业务如何发展? 好吧,第一步是创建您的存储库。 存储库 (简称“ repo”)是项目所有相关文件的保存(和版本控制)。 虽然可以将一个主存储库分成多个子存储库,但建议的做法是为您处理的每个项目都有一个单独的存储库。 我唯一的例外是小型单文件项目。 例如,我为所有Opensource.com文章保留一个存储库,因为每篇文章都是一个文件。

要启动您的存储库(或对其进行初始化 ),该过程非常类似于启动任何大型项目。 首先为项目创建一个目录。 然后,您进入该目录并初始化存储库。 在命令行中,步骤如下所示:



   
   
$ mkdir myproject
$ cd myproject
$ hg init

最后一个命令hg init是用来初始化存储库的Mercurial命令(所有Mercurial命令均以hg开头; Hg是汞的化学符号)。 如果是从TortoiseHg进行此操作,请转至文件新建存储库,然后使用弹出对话框选择项目目录的路径。 然后,它将为您运行hg init命令。

当然,如果您实际上没有任何项目文件,那么拥有存储库并不会带来很多好处。 而且不幸的是(但有充分的理由 ),它不像在您的回购目录中复制或创建文件那样简单。 这样不是自动的。 您希望Mercurial跟踪(即保留其版本)的任何文件都需要显式添加到存储库中。 从命令行(假设您仍在项目目录中):


$  hg add totally_sweet_painting.ora 

这使Mercurial知道您希望它跟踪对文件的更改—在这种情况下,为totally_sweet_painting.ora 。 在TortoiseHg中,您可以从左下方的窗格中执行此操作。 您应该在其中看到文件,其中带有复选框和左侧的问号。 您可以右键单击文件名,然后从出现的上下文菜单中选择“ 添加 ”。

现在,Mercurial知道要跟踪文件上的更改,但是尚不知道实际上已进行了任何更改。 您需要将更改和更新明确提交到存储库。 在提交时,您需要包含说明或所做更改的说明或消息 。 这似乎是不必要的麻烦,但是请相信我,几个月后(或者我第二天)回到您的项目时,拥有有关更改的更多信息非常有用,这样您就可以更好地了解您要去的地方。 用陈词滥调来解释,那些不知道其版本历史的人注定要在他们的项目中重复过去的错误。

在最简单的一种提交方式中,您将有关更改的消息全部包含在同一行中,如下所示:


$  hg commit -m "Added my totally sweet painting to the repo." 

要在TortoiseHg中执行相同的操作,请使用界面最右侧的“提交”按钮。 当您单击该按钮时,将出现一个对话框。 该对话框显示提交(或changeset )中的更改,并为您提供一个用于输入提交消息的文本区域。

就是这样。 从这里开始,您将继续创作完全精美的画作。 在继续工作时,请定期对存储库进行提交,并通过修改文件或添加新文件来记录所做的更改。 您不必在每次保存文件时都执行此操作(我们中的有些人已经将Ctrl + S内置到我们的工作风格中,以至于击打它似乎就像是一跳肌肉)。 但是,每当您进行较大的更改时或即将离开工作一段时间之前,最好进行提交。 同样,使用视频游戏中的“保存状态”类比作为适当时机的经验法则。

在工作时,您始终可以询问Mercurial,自上次提交以来,它认为已更改了哪些文件。 您只需要发出以下命令:


$  hg status 

然后,Mercurial将列出哪些文件已更改,哪些文件已添加以及哪些文件根本没有被跟踪。 在TortoiseHg中,这些更改显示在左侧的文件列表窗格中(您可能需要单击“刷新”按钮以获取当前视图)。

对我来说,我通常同时使用终端窗口和TortoiseHg。 我从终端输入所有Mercurial命令,然后可以从TortoiseHg快速(吸引人)记录我的提交历史。 从技术上讲,我想我可以从TortoiseHg的集成控制台窗格(“ 视图” →“ 显示控制台” )完成所有命令行工作,但是无论如何我通常都会打开一个终端,所以这对我来说没有什么大不了的。

知道应该版本化的版本

一旦弄清楚了版本控制的工作原理,就会很想在项目的所有内容上使用它。 尽管这样做有一定的价值,但这不一定是管理项目存储库的最有效方法。 例如,如果您倾向于收集参考文件(视频,照片,情绪板插图等),则这些文件的变化不会很大,并且实际上并不是项目的一部分,因此它们并不是真正的项目。需要版本控制。

那是事物的输入方面。 在输出方面,我倾向于使用类似于软件开发人员使用版本控制的方法。 也就是说,我只版本化我的“源”文件,而不版本从该源派生的输出文件。 例如,如果我正在Inkscape中进行设计,则将SVG文件包含在存储库中。 但是,如果需要交付导出的PNG或PDF或EPS文件作为完成的工作, 则不要使用Mercurial对这些文件进行版本控制。 我始终可以(相对容易)从源SVG重新导出,因此这些导出文件丢失不会有多大关系。 因此,我不需要通过跟踪它们来使我的仓库杂乱无章。

在较大的项目(例如3D动画)中,这可能有点混乱,在该项目中,重新生成动画帧是一个计算量大且耗时的过程,如果不需要,则不必重复。 但是,对于那些类型的项目,我仍然更喜欢将输出保留在主存储库之外。 如果对这些文件进行版本控制确实很关键,那么我可能会选择仅做一个二级存储库或一个子存储库来保存该输出,但这是高级话题。

当然,在版本控制这一主题上,涉及的内容比我在这篇小文章中介绍的要多得多,例如将存储库克隆到其他计算机以进行协作或远程工作,创建分支以安全地试验想法和变体并进行标记作为重要的里程碑。 但是,这应该足以使您开始正确的版本控制和项目目录,永远不会被那些令人讨厌的v2v3-FINALv13-FINAL8 (等等)文件弄乱

如果您不介意,请在评论中告诉我您对此类文章的看法。 如果有兴趣,我当然可以在以后的Open Art专栏中继续谈论这一点。

创造有趣的东西玩得开心!

翻译自: https://opensource.com/life/16/2/version-control-isnt-just-programmers

适合程序员的linux版本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值