我希望控制目录的版本,我们称其为“项目”,然后将化石文件保留在另一个名为“化石”的目录中。我成功地创建了“ 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 diff 或者 fossil ui 或类似的事情,直到我需要深入研究我的项目的历史时,我希望这种情况永远不会发生。

编辑。 我是个新手。我不确定我是否理解其含义 checkout, manifest, leaf, , ETC。因此,尽管我花费了无数的时间来尝试,但我还是很难从手册中得到任何东西。我不太明白这页的内容 fossil open: http://fossil-scm.org/fossil/help/open

有帮助吗?

解决方案

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

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

打开 命令将当前目录标记为 工作目录 (用化石术语来说, 查看)。我建议您在需要移动存储库或工作目录本身之前不要关闭它。就我个人而言,只有当我转移到另一台计算机时才会发生这种情况。

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

笔记addremove不是 自动识别文件重命名!如果您已重命名文件,则应使用以下命令让 Fossil 知道每个文件的重命名情况: fossil rename 命令, 你执行 addremove 命令。当然,如果您不介意破坏特定文件的编辑历史记录,则可以跳过这一点,让化石认为一个文件已被删除,而另一个文件被添加了。

其他提示

低仪式和简单的开始

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

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

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

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

下一步

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

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

化石专用词汇

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

  • “报到”:一组特定的文件修订版本,由 UUID 以及可能由一个或多个标签标识。
  • “查看”:关联的文件夹树(通过 fossil open)与特定的存储库。大多数化石命令要求当前目录位于打开的结帐范围内。
  • “UUID”:化石存储库中存储的任何特定事物的唯一标识符。实际上,UUID 是以十六进制表示的事物的 SHA-1。在大多数情况下,UUID 可以缩短为完整哈希的前导数字,以唯一地标识它。通常将其写为方括号中的 8 或 10 位数字。
  • “人工制品”:存储在存储库中的文件或其他内容(wiki 页面、票证、清单等)。您签入的每个文件都会成为工件。关于每次签到的所有元数据(评论、时间戳等)也是如此。
  • “分支”:从某个根签入分支出来的一系列连续签入。分支用于将更改保留在一边,直到准备好合并为止,或者仅用于包含错误的更改。
  • “叶子”:在分支的尽头办理登机手续。
  • “树干”:任何存储库中的第一个分支都被命名为“trunk”。大多数其他分支将是沿着主干进行某些签入的分支。
  • “显现”:在特定签入中修改的文件列表以及描述该签入的元数据(用户、时间、描述、其父签入的 UUID 以及它可能携带的任何标签)组成了清单。大多数用户实际上并不需要担心清单,它们是由 fossil commit 并可以从网络界面查看。

网页界面

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

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

更多帮助来源

除了 网站 以及可从以下位置获得的单独命令帮助 fossil help, ,还有许多用户应该了解的其他一些资源。

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

吉姆·辛普夫有一个 它试图成为教程和完整的参考,并包含一些关于最佳实践的建议。非常值得一读。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top