我对编程世界并不陌生,对术语和典型方法的理解很少。
前一段时间我正在编写一些代码,但在删除错误的代码时意外删除了一些好的代码。从那时起,我开始创建我的文件版本,我会用日期和版本号命名每个文件。
然而,这是一个痛苦的问题,必须为每个文件指定一个唯一的名称,然后转到我的核心文件并更改对新文件名称的引用。
然后,就在前几天我不小心写了一些重要的东西,即使用这种方法,可能是因为命名错字。
毋庸置疑,这种方法很糟糕。
我正在寻找有关更好的做法,更好的工具的建议。我一直在看版本控制,但很多,git svn看起来很复杂。我们的想法是加快整个版本控制过程,不要因为必须执行命令行而变得更难。
现在我希望有一个工具可以在每次点击ctrl-s时保存文件的唯一版本,并给我一个按钮来创建最终版本。
当然,如果有完全不同的做事方式的建议,那就更棒了。
谢谢大家。
答案 0 :(得分:17)
这个问题有两种方法:
听起来你更喜欢#2,因为它是“万无一失” - 你永远不必去,“哎呀,我应该在进行这项改变之前'检查'/'保留'我的工作。”你总是可以回滚。一个缺点是你必须手动逐步查看旧版本才能找到一些东西,因为与#1不同,你通常不会给出每个变化的描述。
另一个缺点是,对于大文件或不易扩散/修补的文件(即二进制文件),您将开始快速刻录磁盘空间..
另外,听起来您不需要标准SCM系统中90%的功能 - 分支,标签等 - 但您最终可能会发现它们的用途。从长远来看,学习一个可能是一个胜利。您可以使用svn等执行此操作,但需要进行一些自定义。如果您使用可编写脚本的编辑器(emacs,vi,TextMate等),您可以将“保存”命令重新定义为“保存并制作新版本”。
答案 1 :(得分:13)
颠覆或多或少是黄金标准。
我建议(特别是对于新手)你检查BeanStalk(www.Beanstalkapp.com)为你的客户运行你的subversion服务器和TortoiseSVN。
祝你好运!答案 2 :(得分:6)
无论你做什么,如果有人提到Visual SourceSafe - 尽可能快地运行。 VSS由撒旦自己创建并传承给全世界的开发者。
答案 3 :(得分:5)
我认为你处在一个你必须从你的舒适区域稍微离开并花些时间学习git的位置。这很容易学习和使用。
相信我,这真的很值得。花在学习git上的时间花得很好。
答案 4 :(得分:4)
如果您不在团队中工作,则可以使用Eclipse的本地历史记录功能。它在本地存储您的文件版本,您可以随时恢复到以前的版本。更多详细信息:http://help.eclipse.org/ganymede/index.jsp(搜索“本地历史记录”)。我很确定其他IDE也有这样的功能。
如果您在代码上与其他人合作,可能无法学习SVN,CVS或git等标准工具之一。对于他们中的大多数,有许多IDE的插件可用,所以你不 使用命令行。
答案 5 :(得分:4)
答案 6 :(得分:3)
如果您正在寻找一个易于设置的Windows版本控制系统,我强烈推荐TortoiseHg,一个易于使用的Mercurial Windows前端。您不必担心设置和跟踪与文件分开的存储库,但如果您愿意,您始终可以这样做。 Mercurial是一个很好的工具,因为它可以随着您的需求而增长。它具有易于合并等所有常用功能,并且在我的经验中比Git更容易包围。
答案 7 :(得分:3)
最好学习如何使用像Subversion这样的现有“行业标准”版本控制工具。即使你是编程和版本控制的新手,SVN也不是那么难学,并且会很好地为你服务。我个人使用并推荐VisualSVN Server和TortoiseSVN用于Windows。两者都是免费的,而且使用起来非常简单。
对于在每次保存时创建修订的系统,也许您应该查看Versioning File System。
答案 8 :(得分:3)
我认为如果你在Windows中,TortoiseSVN将是一个很好的Subversion客户端供你试用。它不会做你想要的每次 - 我保存 - 我得到一个新版本 - 你必须手动“提交”版本到存储库。当您进行提交时,会创建一个新版本,从而基本上保存您的进度。 TortoiseSVN非常人性化,它是一个GUI,所以你不会在命令行工作。您可以执行以下操作:在Windows资源管理器中右键单击文件,然后选择“提交”以保存进度。此外,TortoiseSVN是免费和开源的。
答案 9 :(得分:3)
颠覆并不是很复杂。如果您使用的是Windows,TortiseSVN会有很多帮助,如果您使用的是Eclipse,则subclipse插件非常棒。 (你可能应该使用eclipse而不管:))
其他一些有点复杂,但你只需要了解eclipse的模式。也许你可以用开源项目或一些现有的subversion服务器“试一试”。
周期将是:
首先你“检查”一个存储库。这将使用存储库中的内容填充指定的目录。
如果您是从命令行执行此操作 - 它是“svn co” - 那里有足够的帮助可以找出其余部分。
其次,您编辑文件。你不必锁定它们或任何东西。
如果添加新文件,则在添加后立即使用“svn add filename”。在您提交更改之前,这实际上不会更改存储库。
完成一组编辑后,用“svn ci”(也是svn commit works)检查它们。 这个有一个轻微的扭曲,你永远会忘记 - 每个提交需要一个评论。您不必指定要提交的文件或任何内容,但您需要位于项目的顶层(它将提交您目录下的所有内容。
所以这里的过程是,转到项目树的“根”并输入:
svn ci -m“评论”
一块蛋糕。最后,如果其他人正在检查东西中的东西,那就太陌生了。在你提交之前,你应该“更新”并获得他们的更改。 “svn up”就是它所需要的,但它可能会警告你有合并。这只有在你们两个编辑同一个文件时才会发生,而且90%的时间,合并都可以。在剩下的时间里,它会在你的文件中放置一些小标记,告诉你你改变了什么,改变了什么。 “up”命令将告诉您它执行此操作的文件。在检查文件之前,请查看它们并清理文件。
总是在“svn up”和“svn ci”之间进行测试,你永远不知道他们糟糕的变化是否会破坏你的原始代码。
真的是这样。从CLI开始这么简单,图形环境几乎不值得(但是如果你在eclipse中,那么subclipse非常好,因为它会直观地显示需要检入的修改过的文件)。
如果你忘记了,svn的命令行帮助是非常简洁和有用的,它告诉你你需要知道什么,并且对所有的子命令和选项都有帮助。
答案 10 :(得分:2)
无论您使用哪种VCS,如果您选择按需版本控制而不是自动版本控制(借用Alex的帖子中的条款),您将不得不通过一些仪式来: -创建, -改名, -移动, -copy,或 -删除 一个受源代码控制的文件。
创建新文件时,必须先将其添加到源代码管理,然后才能将更改提交到存储库。
在源代码管理下重命名,移动,复制或删除文件时,请使用VCS客户端执行此操作。在TortoiseSVN和TortoiseGit中,移动和复制操作通过右键单击并拖动完成,而重命名和删除操作可通过右键单击获得。
正如您所能想象的那样,更改项目名称之类的内容可能非常麻烦,因此需要进行自动版本控制。
普通文件编辑以及源代码管理下文件不的任何更改都不需要您告诉VCS客户端。
最后,对于单人项目,我更喜欢git over SVN,因为SVN需要至少2个副本的副本:存储库(文件和历史的“主”副本)和工作副本(你做的副本)从事于)。使用git,存储库和工作副本是相同的,这使我的经验更简单。
答案 11 :(得分:2)
您肯定在正确的轨道上认识到需要进行版本控制,但声音不确定这对您和您的工作意味着什么。一旦你学习了版本控制系统背后的概念,你就会真正体会到它们。
概念很简单:源代码控制系统是一个旨在帮助您存储和管理代码的软件。根据您选择的系统,如何将代码输入和输出有所不同:一种范例是您故意“检出”文件,对其进行更改,测试并确保它是好的,然后重新检入。另一个原因是,您只需保存所做的每一项更改,因为磁盘空间非常便宜,比您在创建源所花费的时间和精力便宜得多。
另一个重要概念是“基线”或“标签”。当您的产品处于准备发货状态时,您告诉源代码控制系统创建“标签”并使用该标签标记整个源代码库的每个当前项目。这样,当有人报告版本4.1中的错误时,您可以转到您的系统,请求所有带有“版本4.1”标签的文件,并获得他们遇到问题的源代码。
将源代码控制工具与开发环境集成在一起使得整个过程比不必使用命令行更容易。 (不要因为它们的复杂性而折扣命令行,它们为有经验的用户提供优雅的控制,最终你将成为一个有经验的用户。)但是现在,我推荐一个可以自动化过程的源代码工具。尽可能。
需要考虑的一些事项:您现在是,还是计划与其他开发人员共享开发?这可能会对您要如何设置服务器产生影响。如果你在自己的盒子上独自开发,你可以在本地设置它,但这可能不是团队的最佳方法。 (如果您不确定,git在该领域非常灵活。)您是要存储大型多媒体文件,还是仅存储源代码?一些源代码系统旨在有效地存储文本文件,并且不会很好地处理电影,声音或图像文件。
还有一点要知道的是,大多数较新的源代码控制系统需要在服务器上运行某种“守护程序”程序(Subversion,git,Perforce,Microsoft Team Foundation Server),而旧的,更简单的系统只需直接使用文件系统(Visual Source Safe,cvs)并且不需要服务器程序。
如果您不想学习太多而且您的要求很低,那么更简单的解决方案就足够了。微软的Visual Source Safe过去常常带有Visual Studio产品,是一款非常简单易用的工具。它不是很强大,只有微软,它不能很好地处理大文件,但它的设置和使用非常非常容易。如果您不想花钱,Subversion和git是两个出色的开源解决方案,并且在网络上有很多文档。
如果你想花钱,Perforce被认为是专业开发团队的最佳选择(我相信他们有一个免费的单一开发者版本。)如果你真的想花很多钱并想让比尔盖茨开心,Microsoft的Team Foundation Server是一个完整的软件开发生命周期管理器,在Windows环境中极易使用,而且功能非常强大;但是你可能想要用一整个Windows服务器(加上SQL Server)实例来托管它,而且只需要许可就可以花费几千美元。不幸的是,它不是单人商店的正确工具,或者如果您没有Windows管理员经验。
如果您有预算或连接,引入经验丰富的软件工程师来帮助您开始工作可能是成功的最快捷途径。否则,您将需要做更多的研究,以了解哪种系统最适合您的情况。
答案 12 :(得分:2)
我使用过Git,SVN,CVS和Perforce。在Windows和Unix环境中。
我的投票肯定是SVN,因为它的易用性和灵活性。我现在首先使用命令行,但有一次我使用TortoiseSVN for Windows,我们能够让非技术人员顺利使用。
使用SVN。
答案 13 :(得分:2)
我认为Git非常易于使用,特别是当您使用GitHub时。它们还提供了许多良好的启动和运行指南。
http://github.com
http://github.com/guides/home
答案 14 :(得分:1)
实际上有这样一种工具。它被称为emacs。
只需创建一个“〜/ .emacs”文件并在其中加入以下行:
(setq kept-new-versions 5)
(setq kept-old-versions 5)
然后重启emacs。
这告诉emacs保存该文件的5个最旧版本和5个最新版本。它们将保存在名为filename~n~的文件中,其中“filename”是文件的正常名称,“n”是备份号。
答案 15 :(得分:1)
如果只是你,你可能想尝试Bazaar。它像Git一样分发(所以它对一个人来说很好 - 没有服务器可以处理),但他们的主要目标之一是让它比Git更容易使用。
此外,有一个方便的gui工具,应该使它非常容易使用称为ToroiseBzr。 http://bazaar-vcs.org/TortoiseBzr
答案 16 :(得分:1)
如果您单独开发项目(不需要服务器进行协作),Mercurial可能是您的首选系统。我个人非常重视它的一个功能:它只使用一个地方来保存其信息,它是项目根目录中的 .hg 目录。它不会将其数据放入每个目录(如SVN)。这样,归档和项目目录易于管理。
答案 17 :(得分:1)
首先,请阅读Eric Sink撰写的这些文章。 Eric sink运营着一家公司,该公司创建了一个名为Vault的源控制系统。他以新手友好的方式解释了如何进行源代码控制,最佳实践等:
Introduction to Source Control
当我第一次想要了解Source Control时,我发现它非常宝贵。
SourceGear Vault对单个用户免费。它的界面非常直观,可以与Visual Studio很好地集成。
答案 18 :(得分:1)
我们使用SourceGear Vault,它与Visual Studio有很好的集成,对单个用户免费。但是,根据您使用的框架和语言,Subversion是一个很好的免费解决方案。
答案 19 :(得分:0)
我使用过Visual Source Safe,Perforce和Subversion。它们都很好,但我不得不说Subversion的支持和扩展似乎稍好一些。如果您计划进入/留在软件行业,您必须知道源代码控制的基础知识,我强烈建议您设置其中一个源代码管理服务。颠覆是我的推荐,也是免费的。一开始会很复杂,但你真的应该使用SVN客户端添加一个GUI来增加效用并减少你正在观察的所有复杂情况。
答案 20 :(得分:0)
我快速google的“dreamweaver svn”显示很多人在Dreamweaver中使用Subversion。我是版本控制的倡导者,特别是SVN,所以我建议你研究一下:)
如果您不想使用完整的版本控制系统(如上所述),您可以通过改进和自动化您最初描述的过程来改善您的批次。根据您对工具的熟悉程度,您应该能够在DreamWeaver本身或Windows Scripting(Powershell,VBA,Perl等)中组合一个脚本,该脚本至少会创建您正在使用的文件夹的日期命名副本。经常。这将使您不必这样做,并确保没有任何与拼写错误相关的问题。在该路径上,您可以让脚本将您的工作副本放在备份驱动器或远程服务器上,然后您也可以备份。
我担心我对DreamWeaver了解不多,但如果它内置了很多脚本支持,你甚至可以“挂钩”保存/自动保存功能并让它们完全按照你的要求想。
希望这有帮助, adricnet