我想${SHA}通过Web界面从GitHub 获得一次提交(让我们称之为).
例如,类似于:
$ git clone http://github.com/foo/bar
$ cd bar
$ git format-patch -o .. ${SHA}~1..${SHA}
$ cd ..
$ rm -rf bar
Run Code Online (Sandbox Code Playgroud)
...但无需克隆整个存储库(问题中的repo很大).
显然GitHub可以通过web接口显示给定提交的差异,但是我如何将其提取到(统一)差异文件中(理想情况下,提交消息完好无损)?
我想在python中构造一个绝对路径,同时保持对路径分隔符之类的东西的相当遗忘.
edit0:比如有我的文件系统的根目录/etc/init.d(或C:\etc\init.dW32上),我想只从要素建设这个etc和init.d(W32上,我可能还需要一个磁盘ID,如C:)
为了不必担心路径分离器,os.join.path()显然是选择的工具.但似乎这只会创建相对路径:
print "MYPATH:", os.path.join('etc', 'init.d')
MYPATH: etc/init.d
Run Code Online (Sandbox Code Playgroud)
添加虚拟第一元素(例如'')对任何事情没有帮助:
print "MYPATH:", os.path.join('', 'etc', 'init.d')
MYPATH: etc/init.d
Run Code Online (Sandbox Code Playgroud)
使第一个元素绝对显然有帮助,但这种方式违背了使用的想法 os.path.join()
print "MYPATH:", os.path.join('/etc', 'init.d')
MYPATH: /etc/init.d
Run Code Online (Sandbox Code Playgroud)
edit1: using os.path.abspath()只会尝试将相对路径转换为绝对路径.例如,考虑在工作目录中运行以下命令/home/foo:
print "MYPATH:", os.path.abspath(os.path.join('etc', 'init.d'))
MYPATH: /home/foo/etc/init.d
Run Code Online (Sandbox Code Playgroud)
那么,"根"路径的标准跨平台方式是什么?
root = ??? # <--
print "MYPATH:", os.path.join(root, 'etc', 'init.d')
MYPATH: /etc/init.d
Run Code Online (Sandbox Code Playgroud)
edit2:这个问题真的归结为:由于前导斜杠/etc/init.d使得这条路径成为绝对路径,有没有办法以编程方式构造这个前导斜杠?(我不想假设前导斜杠表示绝对路径)
我知道您可以通过在openssl.cfg文件中添加类似这样的行来指定证书公钥可用于的目的:
extendedKeyUsage=serverAuth,clientAuth
Run Code Online (Sandbox Code Playgroud)
但是由于我有几个要创建的证书,每个都有不同的扩展密钥用法,是否可以在命令行中指定我需要的属性(不使用openssl.cfg文件)?就像是:
openssl req -newkey rsa:4096 \
-extendedKeyUsage "serverAuth,clientAuth" \
-keyform PEM \
-keyout server-key.pem \
-out server-req.csr \
-outform PEM
Run Code Online (Sandbox Code Playgroud)
谢谢!
因此,我的一位同事尝试在 Web 界面中使用 GitHub 的“通过快进合并”选项来合并一个分支,以保持历史记录免受虚假合并提交的影响(master他们合并到的分支,自从到-合并功能分支已启动)。
有趣的是,这并没有按预期工作:所有提交都有新的提交哈希。
仔细检查一下,似乎合并选项实际上被称为“Rebase and Merge”,它似乎确实相当于git rebase --force改变了提交者信息(进行合并的人以及合并发生的时间)。
我花了很长时间才确认我的怀疑确实如此,因为我无法使用 cmdline 工具向我展示功能分支上的原始提交和看似相同的提交(具有不同的哈希值)之间的区别在主分支上。(最后,我发现,gitk同时显示了提交者和提交作者;在非常最后我发现我也能得到通过这些信息git log --pretty=raw)
所以:
git rebase 无需在--forcemaster)如果我想将环境变量继承到子进程,我会执行以下操作:
export MYVAR=tork
Run Code Online (Sandbox Code Playgroud)
假设我有一个site.conf包含赋值给变量的值(可以包含空格)的文件:
EMAIL="dev@example.com"
FULLNAME="Master Yedi"
FOO=bar
Run Code Online (Sandbox Code Playgroud)
现在我想在每次打开一个新shell时处理这个文件(例如,在~/.bashrcor中有一些代码~/.profile),这样从新打开的shell中启动的任何进程都将通过环境变量继承赋值.
显而易见的解决方案是为每行site.conf添加一个export并且只是源文件.但是我不能这样做,因为文件也被其他一些应用程序读取(直接),所以格式是固定的.
我试过类似的东西
cat site.conf | while read assignment
do
export "${assignment}"
done
Run Code Online (Sandbox Code Playgroud)
但由于各种原因(最重要的export是在子shell中执行,因此该变量永远不会导出到调用shell的子节点),这不起作用.
有没有办法以编程方式export在bash中使用未知变量?
是否可以.pkg在Ubuntu或Fedora中运行文件.如果是这样,我该如何开始呢?
什么是.pkg文件?它是Mac系统中使用的文件格式(Apple Inc.)
有没有可以.pkg在Linux发行版中运行文件的替代方案?(特别是Ubuntu或Fedora,我在两个发行版中都使用了最新版本).
众所周知,openGL使用的像素数据方向在左/下有0/0,而世界其他地方(包括几乎所有图像格式)都使用左/上.多年来,这一直是无休止的担忧(至少对我而言),我仍然无法找到一个好的解决方案.
在我的应用程序中,我想支持以下图像数据作为纹理:
glReadPixels)glCopyTexImage)获取的图像数据(案例#1提供自上而下的图像(大约98%的情况;为简单起见,我们假设所有"外部图像"都有自上而下的方向);#2和#3有自下而上的方向)
我希望能够将所有这些纹理应用到各种任意复杂的对象上(例如,从磁盘读取的3D模型,其中存储了纹理坐标信息).
因此,我想要一个对象的texture_coords的单一表示.渲染对象时,我不想被图像源的方向所困扰.(直到现在,我总是topdown在纹理id旁边带一个标志,当纹理坐标实际设置时使用它.我想摆脱这个笨拙的黑客!
基本上我看到了解决问题的三种方法.
在旧时代,我一直在做#1,但事实证明它太慢了.我们想不惜一切代价避免使用像素缓冲区.
所以几年前我已经转向#2了,但这种方法很难维护.我真的不明白为什么我应该携带原始图像的元数据,一旦我将图像转移到gfx卡并有一个漂亮的小抽象"纹理" - 对象.我正在最终将我的代码转换为VBO,并且希望避免更新我的texcoord数组,因为我使用的是相同大小但具有不同方向的图像!
离开#3,我从来没有设法为我工作(但我相信它必须非常简单).直觉上我虽然使用类似的东西glPixelZoom().这适用于glDrawPixels()(但是谁在现实生活中使用它?),并且afaik应该可以使用glReadPixels().后者很棒,因为它允许我至少为主存储器中的所有图像强制一个合理快速的同质像素方向(自上而下).
然而,它似乎glPixelZoom()对通过传输的数据没有影响glTexImage2D,更不用说glCopyTex2D(),所以从主存储器像素生成的纹理都将颠倒(我可以忍受,因为这只意味着我必须将所有传入的texcoords转换为自上而下加载时).现在剩下的问题是,我还没有找到一种方法将帧缓冲区复制到纹理(使用glCopyTex(Sub)Image),可以与那些自上而下的texcoords一起使用(即:如何在使用时翻转图像glCopyTexImage())
有这个简单问题的解决方案吗?一些快速,易于维护并在openGL-1.1到4.x上运行的东西?
啊,理想情况下它可以同时使用2的幂和非幂(或矩形)纹理.(尽可能......)
我想在网址下app提供与assets文件夹位于同一级别的文件夹/app.
可以AppController根据网址提供文件,但是我想知道是否有可能像下面的快递一样做这个?
app.use(express.static(__dirname + '/public'));
Run Code Online (Sandbox Code Playgroud) 我有一个大的C++项目,源文件组织在多个文件夹中(在文件系统上).
在其中两个文件夹中,我有相同名称的文件.例如
\MyProject\foo\Blurp.cpp
\MyProject\foo\File.cpp
\MyProject\bar\File.cpp
\MyProject\bar\Knoll.cpp
Run Code Online (Sandbox Code Playgroud)
该项目是跨平台的,我在linux和OSX上使用autoconf,但必须在W32上使用MSVC(由于我在W32上使用的一些第三方C++库和C++二进制接口在编译器之间不兼容)
在MSVC方面,项目也被组织成多个"过滤器"(那些虚拟文件夹)(名称大致对应于文件所在的目录),所以我可以区分它们.
现在问题是,当我构建项目时,MSVC将目标文件放在一个单独的平面中,我最终得到:
\MyProject\Release\Blurp.obj
\MyProject\Release\File.obj
\MyProject\Release\Knoll.obj
Run Code Online (Sandbox Code Playgroud)
可以看出,只有一个File.obj,所以缺少一个二进制对象.显然,链接器会抱怨,因为它找不到那个缺少的对象文件中定义的类/函数/ ...
有没有办法告诉MSVC创建具有唯一名称的目标文件,具体取决于这些文件所在的目录(或过滤器)?
我想象的是:
\MyProject\Release\foo\Blurp.obj
\MyProject\Release\foo\File.obj
\MyProject\Release\bar\File.obj
\MyProject\Release\bar\Knoll.obj
Run Code Online (Sandbox Code Playgroud)
要么
\MyProject\Release\foo-Blurp.obj
...
Run Code Online (Sandbox Code Playgroud)
管他呢.我所知道的所有其他构建系统(CMake,autotools)都能够处理多个同名文件.
这个问题类似于3729515,但我现在仍然坚持VS2008.(针对VS2008建议的解决方案 - 为每个有问题的文件设置对象目录 - 这在理论上确实有效,但出于实际原因我想避免这种情况)
这两个命令之间有什么区别.
git push origin master 和 git push
当我使用第一个(git push origin master)它以某种方式将它2x发送到上游并且只git push发送它1x.
这里有谁能解释为什么会这样?