我正在开发一个我们最近开始使用git的项目.设置从一开始就不完美,所以我在人们开始克隆/工作后设置了.gitattributes,我仍在对这个文件进行一些更改.
考虑以下设置......
Alice和Bob都克隆了"repo.git",并且存储库包含文件/myproj/src/file.ending,其中包含\n行结尾,即文件不包含\r字符.
它们都具有.gitattributes以下设置:
/myproj/src/file.ending -text
Run Code Online (Sandbox Code Playgroud)
这告诉git不file.ending应该被视为文本文件,因此不应该进行行结束转换.
因此,Alice和Bob的工作树中的文件也有\n行结尾.
现在,Alice对.gitattributes进行了以下更改:
/myproj/src/file.ending text
Run Code Online (Sandbox Code Playgroud)
爱丽丝希望这一改变能够为她和鲍勃生效.
我现在知道的唯一方法是非常侵入性的:
git rm --cached -r .
git reset --hard
Run Code Online (Sandbox Code Playgroud)
我想避免两件事:
这样做的首选方式是什么?
在为项目设置 Git 时,我注意到行尾规范化在 Linux 和 Windows 上的工作方式略有不同。
据我了解有关此主题的 Git 文档,Windows 上的行为是正确的。具体来说,当.gitattributes文件存在时,它应该覆盖core.autocrlf设置。
下表显示了我所做的一些实验的结果。最左边的两列显示.gitattributes文件和core.autocrlf设置。其他列显示以下git命令的结果:
git rm --cached <file> (强制下一次结帐以执行行规范化处理)。git checkout HEAD -- <file> (签出文件,应用行结束规范化)git ls-files --eol <file> (检查工作树中的行尾)+----------------+---------------+-------------+-- ------------+--------------+-------------- ----+----------------------------+ | .git 属性 | core.autocrlf | Linux 2.7.2 | Linux 2.11.0 | Linux 2.16.2 | Windows 2.12.2.windows.2 | Windows 2.16.1.windows.1 | | | | | | | | | +----------------+---------------+-------------+-- ------------+--------------+-------------- ----+----------------------------+ | 无 | 真实| 带crlf | 带crlf …
案件
我在服务器进程中使用进程内* Java RMI 注册表。
我在注册表中绑定了 1 个对象。
我的客户端进程连接并查找绑定和传递的远程对象。
现在我希望服务器进程完全关闭,即不应存在更多守护线程。使用 RMI,我在服务器进程中的一个对象上调用“close”,问题是这个“close”方法实际上必须做什么。
问题
如何确保使用 RMI 导出对象的进程中没有运行非守护线程?
据我所知,我必须取消导出**所有导出的对象才能关闭 JVM?由于许多对象已通过 RMI 传递,因此我必须维护这组对象并取消导出**每个对象。
我读过任何导出的对象在垃圾收集时都应该取消导出自身(现在找不到引用),但我的经验告诉我,某些对象(尤其是分布的?)可能需要很长时间才能被垃圾收集,所以这是不是一个真正的选择。
git ×2
line-endings ×2
attributes ×1
client ×1
distributed ×1
eol ×1
java ×1
linefeed ×1
rmi ×1
server ×1