4

我希望控制一个目录的版本,我们称之为“项目”,并将化石文件保存在另一个名为“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类似的事情,直到我希望这永远不会发生,当我需要深入研究我的项目的历史时。

编辑。我是一个完全的新手。我不确定我是否理解、 、 等的含义checkout,因此尽管花费了无数小时尝试,我还是很难从手册中得到任何东西。我不太了解此页面: http: //fossil-scm.org/fossil/help/openmanifestleaffossil open

4

2 回答 2

5

低仪式和容易的开始

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

  1. fossil new创建存储库文件本身。
  2. fossil open创建第一个(或可能唯一的)活动工作区
  3. fossil add, fossil remove,fossil renamefossil addremove让化石了解要跟踪的文件。
  4. fossil commit提交对存储库的更改

在项目的整个生命周期中,根据需要重复步骤 3 和 4。

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

下一步

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

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

化石特定词汇

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

  • “checkin”:一组特定的文件修订,由 UUID 标识,可能由一个或多个标签标识。
  • fossil open“checkout”:与特定存储库关联(按)的文件夹树。大多数化石命令要求当前目录位于打开的结帐中。
  • “UUID”:存储在化石存储库中的任何特定事物的唯一标识符。在实践中,UUID 是 SHA-1 所具有的以十六进制表示的事物。在大多数情况下,UUID 可以缩短到刚好足够完整哈希的前导数字来唯一标识它。它通常写为方括号中的 8 位或 10 位数字。
  • “工件”:存储在存储库中的文件或其他内容(wiki 页面、票证、清单等)。您签入的每个文件都会成为工件。关于每次签到的所有元数据(评论、时间戳等)也是如此。
  • “分支”:从某个根签入分支的连续签入行。分支用于将更改搁置一旁,直到它们准备好合并,或者只是包含错误的更改。
  • “叶子”:分支结束时的签入。
  • “trunk”:任何存储库中的第一个分支都被命名为“trunk”。大多数其他分支将是沿着树干的一些签到的分支。
  • “清单”:在特定签入中修改的文件列表以及描述该签入的元数据(用户、时间、描述、其父签入的 UUID 以及它可能携带的任何标签)构成了清单。大多数用户并不真正需要担心清单,它们是由 Web 界面创建fossil commit并可以从 Web 界面查看的。

网页界面

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

Fossil 本身是存储库内容的高效 Web 服务器。事实上,化石官方网站上的大部分页面都是由化石本身从源代码存储库提供给化石的。

更多帮助的来源

除了网站和可从 获得的个别命令帮助外fossil help,还有许多其他用户应该注意的其他资源。

化石用户列表具有始终如一的高信噪比。关键的开发人员和许多乐于助人且知识渊博的用户一样关注它。该列表至少有一个存档,以及一个单独的列表供开发人员讨论新功能和计划,但化石开发不会有趣,除非您想研究化石本身的内部结构。

Jim Schimpf 有一本书既是教程又是完整的参考书,其中包含一些关于最佳实践的建议。非常值得一读。

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

最后,StackOverflow 上的 [fossil tag][tag] 不能作为资源被忽略。

于 2014-03-04T02:15:12.850 回答
4

fossil open 正确的做法。在你的情况下,这fossil close是没有必要的。

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

open命令将当前目录标记为工作目录(在 Fossil 术语中,一个checkout)。我建议您在需要移动存储库或工作目录本身之前不要关闭它。就个人而言,这只发生在我移至另一台计算机时。

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

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

于 2014-02-27T13:00:18.060 回答