化石:将文件添加到现有存储库,我需要先打开吗?
-
21-12-2019 - |
题
我希望控制目录的版本,我们称其为“项目”,然后将化石文件保留在另一个名为“化石”的目录中。我成功地创建了“ 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
命令。当然,如果您不介意破坏特定文件的编辑历史记录,则可以跳过这一点,让化石认为一个文件已被删除,而另一个文件被添加了。
其他提示
低仪式和简单的开始
对于单个开发人员来说,化石存储库的生命周期可以非常简单:
fossil new
创建存储库文件本身。fossil open
创建第一个(或可能唯一)活动工作区fossil add
,fossil remove
,fossil rename
和fossil addremove
让化石了解要跟踪的文件。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 上的[化石标签][标签]作为一种资源不能被忽视。