FileManager是一款轻量的文件管理器。
为什么要用FileManager?
“想要做一款小巧灵活、能够方便快速地管理大量大文件的仓库的软件。”这是我们的初衷。
事实上,在开发前,我们也考虑了这个问题,即“已经有了Git这样的版本管理软件,为什么还要再写一个?”
但实际上,Git虽然好用,但是其有一个巨大的缺陷,Git对于大文件,特别是大的二进制文件不太友好。当在 Git 仓库中存储大的二进制文件时(>50MB),比如 R 里面的 RData 或 RDS 文件,默认的 git 提交方式无法获取二进制文件的修改,会让仓库越来越大。在这种情况下,将仓库 push 到远程会出现警告;而一些托管服务的提供者,比如GitHub,则禁止push超过100MB的文件。此外,Git的版本管理主要针对的是文本文件,但很显然,我们日常生活中常用的Word、PPT、PDF等文件都是二进制文件。
由此,我们开发了FileManager。与Git不同,它在管理大量二进制文件的时候足够灵活,配合上monitor后可以在近乎一瞬间察觉到整个仓库的里的细微变化。最重要的是,它足够方便,即使是没有安装FileManager的计算机也可以手工进行检出,查看历史文件。
--YubaC
双击install.bat
以执行安装。
访问https://github.com/YubaC/filemanager/releases以获取最新版,或下载最新版
FileManager 每次启动时都会启动一个 update checker。
y
或N
(不区分大小写)的方式来决定是否进行更新。请注意!更新有可能失败。当 updater 的下载进度条长时间不变化时,请尝试关闭 updater 并重新进行更新。
使用help
命令以获取帮助,使用'help -?'命令以打开此文档。
在正确安装 FileManager 后,当在文件夹下右键时,弹出的右键菜单应会包含“在这里打开 FileManager”的选项。
①:当前版本
②:工作路径
③:命令输入
除去在$处单击鼠标外,双击窗口或按 tab 键以快速聚焦。
在输入时使用键盘的 ↑↓ 键以快速调出历史命令,按 F7 以打开历史命令记录。在历史命令记录里选中的命令可以使用回车快速输入。
使用cd
以更改工作目录。
除了使用相对路径外,cd
命令同样也支持绝对路径。列如:
目标路径存在空格时,请使用cd,路径
的方式更改工作目录。
列如:
请注意!所用逗号必须为半角符号(英文符号)。
在命令行输入init newrepo
以在工作路径处新建一个仓库。
这是新建仓库前的 FMTest 文件夹:
可以看到,新建仓库后,仓库所在文件夹下多出了一个隐藏的.filemanager 文件夹。
使用init
以加载工作路径下的仓库。
当出现这样的提示时,使用init -update
以将仓库提升至当前版本:
加载成功后如下:
可以看到,在工作路径下多出了一个括号和六位数字/字母。这是该仓库的
id。
这是加载成功的标志。
红框内是该仓库的分支图。详情请参阅分支
refreash
命令可以刷新整个仓库,检测所有更改,但耗时较长。
reload
命令可以刷新整个仓库,检测所有更改,耗时较短,但需要 monitor 的支持。
关于开启/关闭 monitor 的监控,详情请参阅仓库设置
加载后,如果没有更改,将会提示“没有最近更改的文件”:
否则将会弹窗提示更改的文件。这里我们新建一个 4.txt:
可以看到,弹出了一个名为“ChangesList”的弹窗。
“ChangesList”弹窗分上下两个 ListBox。上部是所有更改/删除/新建的文件列表,下部是暂存的文件列表。
在下部选中的文件可以通过“删除”按钮移除。在上部选中的文件可以通过“添加”按钮暂存。
除此之外,还可以使用add
命令进行暂存操作。详情请参阅添加/移除暂存的文件
请注意!所有的空文件夹都不会被算在内。
在刷新仓库并确认有更改/删除/新建的文件后,可以使用add
命令以添加/移除暂存的文件。
使用add
命令以唤起添加/移除文件(文件夹)面板:
将文件或文件夹拖拽到该面板上以将其暂存/取消暂存。
使用add -f +
和add -f -
以暂存/取消暂存文件。
使用add -d +
和add -d -
以暂存/取消暂存文件夹及其子文件。
请注意!以上两个命令将会弹出如下图所示的一个文件选择框。
add 后的附加参数(-f/-d/+/-)排序不分先后。因此,命令add -f/-d +/-
和add +/- -f/-d
是完全等效的。
commit
命令可以提交暂存的文件。方法是:commit '提交注释'
或commit "提交注释"
。两种方法完全等效。
请注意!所用引号必须为半角符号(英文符号)。
例:提交注释为“My first commit”:
如果所在的提交不是当前分支的最后一个提交的话,会新建一个分支。
例如:
表示在 id=0 的提交处又进行了一次提交。
关于分支,请参阅分支
checkout
命令可以检出选中的提交,即将仓库恢复至所选中的提交提交时的状态。
方法是:checkout 提交id
,列如:
上图表示将仓库恢复至 id=0 的提交(新建仓库)时。
branch
命令可以显示当前仓库的分支图。例如:
又或者:
分支图上的每一个星号(*)表示一次提交。竖线表示分支。
对应星号右侧是该次提交的提交说明。括号内的 id(id=x)为该次提交的编号。
星号右下侧的加号和横线/反斜杠(\)表示从该提交延伸出的子分支。列如,上图中的 id=8~10 的提交表示在 id=1 的提交处又进行了一次提交(id=8),并且在这个提交(id=8)的基础上又提交了 id=9 和 id=10 的提交。
又如:
其含义为:在 id=0 的提交(新建仓库)出,引出一个子分支(id=2)。
diff
命令可以比较文件的不同。
如果想保存比较所生成的对比文件(一个 html 网页),请使用diff -s
。
无论是否选择保存,diff 都将会在比较完成后用浏览器打开对比文件。
请注意!diff
命令只能比较文本文件,形如.word,.ppt,.xls,.psd 等二进制文件均不在可比较的范围内。
set monitor on
以为当前仓库启用 monitor。set monitor off
以为当前仓库禁用 monitor。什么时候适合启用 monitor?
当一个仓库内文件特别多的时候,refreash 会花费很长时间,这时适合启用 monitor,可以大量节省 refreash 的时间。如果 refreash 耗时很短,则不建议启用 monitor。
recommit
命令可以更改过去的提交。方法是:
checkout
命令(详见检出文件)检出需要更改的提交;refreash
或reload
命令(详见检测仓库内文件的更新)刷新仓库;recommit
命令重新进行提交。请三思而后行!这将不可逆的更改仓库的提交历史。若非确认选中的提交不得不进行更改请不要使用。
FileManager会忽略记录在.ignore文件里的文件所发生的变更。
使用set .ignore
命令以快速在当前仓库下创建.ignore文件,或:
.ignore
,类型选择为所有文件(*.*)
,编码选择UTF-8
;使用记事本或其它文本文件编辑器打开及编辑.ignore文件。
直接输入文件名以忽略根目录下的文件。
例如:test.py
表示忽略仓库根目录下的test.py文件。
使用*
以作为通配符。*
可以匹配所有字符及路径。详见通配符
请注意!所有的路径均为相对路径。
输入目录名\
以忽略这个目录下的所有文件。
例:test\
表示忽略根目录下test文件夹内的所有文件。
输入\目录名\
以忽略该文件夹下的所有文件,不论这个文件夹是否位于根目录下。
例:\test\
表示忽略所有路径中包含名为test
的文件夹的文件。
使用*
以作为通配符。*
可以匹配所有字符及路径。详见通配符
请注意!使用目录名\
的方式忽略文件时,该目录必须位于仓库的根目录下。
例如:
根目录
├─01
│ └─test
│ test2.txt
│
└─test
test.txt
可以看出,根目录内有两个文件夹:test和01。其中test文件夹内有一个test.txt,而01文件夹内有一个子文件夹:test2,而test文件夹内又有一个test2.txt。
test\
进行忽略时,只有test.txt会被忽略;\test\
进行忽略时,test.txt和test2.txt都会被忽略。
*
可以作为通配符使用,代替一个或多个字符。
例如:
*.txt
表示忽略所有的txt文件;*test*
表示忽略所有名称或路径中含有test
文字的文件。在需要取消忽略的路径前写入#
以禁用忽略该路径,或直接将该路径删除。