化石:将文件添加到现有仓库,我需要先打开吗?

时间:2014-02-26 19:50:58

标签: version-control fossil

我希望控制目录的版本,让它称之为“项目”,并将化石文件保存在另一个名为“fossils”的目录中。我成功创建了“project.fsl”存储库,添加了我的项目文件,已提交并已关闭。我的问题是了解如何采取下一步。

根据fossilbook建议,这是我的工作。

$ cd project
$ fossil new ../fossils/project.fsl
$ fossil open ../fossils/project.fsl
$ fossil add .
$ fossil ci -m "first commit"
$ fossil close project.fsl

现在我已经完成了我的项目,编辑了一些文件,删除了一些文件,创建了一些文件,重命名了一些文件。我想将项目的当前状态添加到存储库。我该怎么做?

根据我在文档中读到的内容,我的印象是我必须首先打开存储库,然后添加文件,然后提交。如果我不打开存储库,则会收到Not within an open checkout.消息。但是,如果我open化石想用旧文件覆盖我的目录。 (如果我从fossils目录中打开,我会将我的项目的“解压缩”版本复制到化石目录中,而不是我想要的那样)

$ cd project
$ fossil open ../fossils/project.fsl

这里的化石想要用旧版本覆盖我的项目。我对每一个建议都说不。我怀疑open不是正确的方法,但如果不是,那么是什么?

我想将我的更改添加到存储库,所以现在project.fsl是open,我试试这个:

$ fossil add .
 ADDED  Slides/tmp.tex

$ fossil commit -m "no idea what I'm doing, this will not end well"
 would fork.  "update" first or use --allow-fork.

$ fossil close
 there are unsaved changes in the current checkout

此时我删除了名为.fslckout .fossil的所有隐藏文件,然后重试,结果同样令人失望。

坦率地说,我对fossil的唯一兴趣是保留我的项目历史。我没有共同作者,并且不打算做fossil difffossil ui或类似的事情,直到我需要深入了解我的历史时,我希望永远不会发生这种情况。项目。

编辑。我是一个新手。我不确定我是否理解checkoutmanifestleaf等的含义,所以这让我很难从手册中获取任何内容,尽管花费了不计其数的时间。 。我对fossil openhttp://fossil-scm.org/fossil/help/open

上的此页面了解不多

2 个答案:

答案 0 :(得分:4)

fossil open 是正确的做法。在您的情况下,它是fossil close不必要的。

此时,您应该fossil open ../fossils/project.fsl --keep打开您的仓库,同时保留所有更改。

打开命令将当前目录标记为工作目录(在化石术语中,结帐)。我建议你不要关闭它,直到你需要移动你的仓库或工作目录本身。就个人而言,只有当我搬到另一台计算机时才会发生这种情况。

要让化石识别所有变化,只需fossil addremove;然后化石将添加所有新文件,并删除所有已删除的文件,以便存储库再次与工作目录匹配。当然,您仍然需要在之后提交更改。

注意 addremove 会自动识别文件重命名!如果您已重命名文件,则应在执行fossil rename命令之前使用addremove命令之前让Fossil了解每个文件。当然,如果你不介意打破特定文件的编辑历史记录,你可以自由跳过它,让化石认为一个文件被删除而另一个文件被添加。

答案 1 :(得分:4)

低礼仪和简单的开始

对于单个开发人员来说,化石库的生命周期可以非常简单:

  1. fossil new创建存储库文件本身。
  2. fossil open创建第一个(或可能只有)活动工作区
  3. fossil addfossil removefossil renamefossil addremove让化石了解要追踪的文件。
  4. fossil commit提交对存储库的更改
  5. 在项目的整个生命周期中根据需要重复步骤3和4。

    这是化石最强大的优势之一:它的设计非常低。您可以单独维护一个非常精细的项目,并且实际上只能定期使用fossil commit

    后续步骤

    复杂的下一阶段可以向多个方向发展。如果要与第二个开发人员共享项目工作,您将需要了解有关克隆存储库和同步更新的更多信息。如果要在不破坏主干版本的情况下允许对功能进行独立工作,可以了解有关分支和合并的更多信息。如果您想利用Wiki和票证跟踪器功能,您需要了解fossil uifossil server或配置您的Web服务器以启动化石。

    但是这些用例都不会要求使用fossil close命令。实际上,fossil help的输出最近被分成了大多数用户需要的较短命令列表,以及所有命令的较长列表。在那个部门fossil close没有列出短名单。它通过简单删除文件轻松完成的唯一功能是验证他们未进行未保存的更改,并从{{1}可用的个人结帐列表中删除打开的结帐}命令。

    化石特定词汇

    即使是单个开发人员也希望学习化石文档中使用的一些词汇。

    • " checkin":一组特定的文件修订版,由UUID标识,可能还有一个或多个标记。
    • " checkout":与特定存储库关联的文件夹树(fossil all)。大多数化石命令要求当前目录在开放结账中。
    • " UUID":化石储存库中存储的任何特定物品的唯一标识符。实际上,UUID是以十六进制表示的SHA-1。在大多数情况下,UUID可以缩短到只有完整哈希的足够前导数字以唯一地标识它。它通常在方括号中写成8或10位数。
    • " artifact":存储在存储库中的文件或其他内容(维基页面,票证,清单等)。您签入的每个文件都会成为工件。关于每次登记的所有元数据(评论,时间戳等)也是如此。
    • " branch":从一些root checkin分支的一系列连续签入。分支用于保留更改,直到它们准备好合并,或者只是包含错误的更改。
    • " leaf":分支末尾的签到。
    • " trunk":任何存储库中的第一个分支都命名为" trunk"。大多数其他分支将是沿着主干的一些签到的分支。
    • " manifest":在特定签入中修改的文件列表以及描述签入的元数据(用户,时间,描述,其父签入的UUID以及它可能携带的任何标签) )弥补清单。大多数用户并不需要担心清单,它们是由fossil open创建的,可以从网络界面查看。

    Web界面

    任何用户都希望了解化石的Web界面。简单的第一步是在开放式结账时说fossil commit。时间轴显示每个签入的节点的开发历史记录,以及绘制用于显示分支和合并的行。 Web界面具有高度可配置性,提供了wiki和票证跟踪器,还提供了一个gui,可以从中调整与项目和存储库相关的大多数设置。

    Fossil本身是存储库内容的高效Web服务器。实际上,fossil's official web site的大多数页面都是由化石本身从源代码库中提供的化石服务。

    更多帮助的来源

    web site以及fossil ui提供的个别命令帮助外,还有其他一些资源,许多用户都应该注意这些资源。

    fossil-users list具有始终如一的高信噪比。关键开发人员关注它,许多有用且知识渊博的用户也是如此。该列表至少有一个archive,以及开发人员讨论新功能和计划的单独列表,但是化石开发不会有趣,除非您想要在化石本身的内部工作

    Jim Schimpf有book试图成为教程和完整参考,并包含一些关于最佳实践的建议。非常值得一读。

    内置命令行帮助以及Web界面所理解的所有页面URL的文档也可以从任何存储库网站/help URL中的化石网页界面获得。 。该帮助文本包括每个命令的文档,包括不受支持的内部测试命令。

    最后,StackOverflow的[化石标签] [标签]不能作为资源被忽略。