我正在尝试创建一个位于OneDrive同步文件夹中的git存储库,但我遇到了一个问题.
我使用OneDrive(正式的MS SkyDrive)通过"云"在我的多个设备之间同步文件夹.在我的开发机器(Win 7 64)上,OneDrive文件夹位于C:\ Users\myusername\OneDrive下.
我在该目录中创建了一个\ git子文件夹,并为该文件夹中的代码(foo.git)创建了一个git存储库.
在同一台机器上,我可以将该存储库克隆到另一个文件夹(非OneDrive同步)并推送和拉取更改.
然而,在我的另一台机器(Win 8.1 64)上,当我尝试克隆存储库(看起来像C:\ Users\myusername\OneDrive\git\foo.git下的所有内容)时,我也同步OneDrive得到"这不是一个有效的git存储库"错误.
\ git文件夹内容"应该"在两台机器之间是相同的,因为它们会被同步.我唯一能想到的是,我的git存储库中可能存在一些未同步的隐藏文件夹/文件.OneDrive应该是同步包括隐藏文件和文件夹在内的所有内容(据我所知).
远程git存储库中是否有隐藏的文件夹或文件?
我不确定为什么这不起作用,我读过其他人使用OneDrive存储git远程存储库而没有问题.也许它的问题是一台机器是Win 7而另一台机器是Win 8.1?
由于我已经用尽了googlingfu试图找到解决方案,有没有人对我可能做错了什么有任何建议或见解?
有趣的是,到目前为止,我从未丢失过Opengl上下文(其中所有缓冲区资源都被擦除).我目前正在使用OpenGL 4.2,通过SDL 1.2和Win7 64上的GLEW,我的应用程序窗口化,无法在运行时切换到全屏(仅在启动时允许).
在我的开发机器上下文似乎永远不会丢失重新大小,但在其他机器上我的应用程序可能会失去OpenGL上下文(这似乎很少见).由于内存限制(我有很多内存被应用程序的其他部分使用)我没有在系统内存中备份我的gl缓冲区内容(VBO,FBO,Textures等),奇怪的是这不是一个问题.我过去因为背景从未被抹去过.
除了可能在全屏和窗口之间切换之外,很难从谷歌搜索在什么情况下丢失OpenGL上下文(擦除所有GPU内存缓冲区).
回到我的DX时代,上下文丢失可能由于多种原因而发生,我会在发生这种情况时收到通知并从系统内存备份重新加载我的缓冲区.我假设(我可能在这个假设中错了)OpenGL(或像SDL这样的管理库)会为我处理这个缓冲区重载.这在某种程度上甚至是部分正确吗?
我遇到的一个问题是丢失调整大小的上下文,非常不方便,我使用大量的GPU内存,并且必须重新加载所有内容都可以暂停应用程序(比我想要的长).
这是设备相关的事情还是驱动因素依赖?它是设备,驱动程序和SDL版本的某种组合吗?如何检测这样的上下文丢失,以便我能对它作出反应?
标准做法是保留所有gl缓冲区内容的系统内存内容,以便它们可以在上下文丢失时重新加载吗?或者是背景损失是否足够罕见以至于它不是标准做法?
因此,在减少编译时间,将声明与定义分离,并且不影响我编写的用于其他项目的C++数学库的性能时,我和同事一直在讨论显式模板实例化的好处.
基本上我有一个有用的数学函数库,用于处理像Vector3,Vector4,Quaternion等原语.所有这些函数都是用于模板参数是float或double(在某些情况下是int).
所以我不必两次编写这些函数,一次用于浮点数一次为double,函数实现是模板化的,如下所示:
template<typename T>
Vector3<T> foo(const Vector4<T>& a,
const Quaternion<T>& b)
{ do something... }
Run Code Online (Sandbox Code Playgroud)
全部在.h文件中定义(因此它们被隐式标记为内联).这些功能中的大多数都很短,希望在使用编译期间内联.
然而,标题变得越来越大,编译时间越来越多,并且通过浏览标题很难找到函数的存在(这是我喜欢将声明与实现分离的众多原因之一).
所以我可以在附带的.cpp文件中使用显式模板实例化,如下所示:
//in .h
template<typename T>
Vector3<T> foo(const Vector4<T>& a,
const Quaternion<T>& b)
{ do something... }
//in .cpp
template Vector3<float> foo<float>(const Vector4<float>& a,
const Quaternion<float>& b);
template Vector3<double> foo<double>(const Vector4<double>& a,
const Quaternion<double>& b);
Run Code Online (Sandbox Code Playgroud)
这应该有助于编译时间?这是否会影响函数内联的可能性?这些问题中的任何一个问题的答案通常是编译器特定的
另一个好处是它确实验证了函数编译,即使我还没有使用它.
我也可以这样做:
//in .h
template<typename T>
Vector3<T> foo(const Vector4<T>& a,
const Quaternion<T>& b);
//in .cpp
template<typename T>
Vector3<T> foo(const Vector4<T>& a,
const Quaternion<T>& b)
{ do something... …Run Code Online (Sandbox Code Playgroud)