在我们公司,我们正在从svn转向git.对于问题跟踪,我们使用Atlassian的JIRA.
现在我们要强制执行每个提交消息都包含一个问题编号(就像我们使用svn一样).
我们找到了commit-msg钩子,如果它不包含问题编号,我们用它来拒绝提交.
JIRA使用Fisheye扫描git repo.如果提交消息包含问题编号,则更改将显示在该问题下.
问题是克隆git存储库时不会复制钩子.因此,不会强制执行提交消息中的问题编号.这意味着当向上推送新提交时,Jira可能不会列出问题下的更改.
问题是; 我们以某种方式以错误的方式使用Git并且有没有办法在提交消息中真正强制执行问题编号?或者是否有任何人只有一个脚本/钩子(除了commit-msg钩子)来完成这个?
我遇到了链接到我们编写的Haskell库的问题.它在Ubuntu上出错,但在Arch Linux上却没有.我们得到的Ubuntu错误是这样的:
/usr/bin/ld: warning: libHSdeepseq-1.3.0.0-ghc7.4.1.so, needed by /usr/lib/ghc/containers-0.4.2.1/libHScontainers-0.4.2.1-ghc7.4.1.so, not found (try using -rpath or -rpath-link)
/usr/lib/ghc/containers-0.4.2.1/libHScontainers-0.4.2.1-ghc7.4.1.so: undefined reference to 'deepseqzm1zi3zi0zi0_ControlziDeepSeq_zdfNFDataArrayzuzdcrnf1_info'
这个问题似乎是由于libHScontainers-0.4.2.1-ghc7.4.1.so错误链接的事实导致的,因为输出可以看到ldd:
ldd /usr/lib/ghc/containers-0.4.2.1/libHScontainers-0.4.2.1-ghc7.4.1.so
linux-vdso.so.1 => (0x00007fffe95a2000)
libHSdeepseq-1.3.0.0-ghc7.4.1.so => not found
libHSbase-4.5.0.0-ghc7.4.1.so => not found
libHSghc-prim-0.2.0.0-ghc7.4.1.so => not found
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f89a5a59000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f89a569a000)
/lib64/ld-linux-x86-64.so.2 (0x00007f89a5fd8000)
显然无法找到依赖库.它们已安装.但是,如果我在Arch上做同样的事情:
ldd /usr/lib/ghc-7.8.3/deepseq-1.3.0.2/libHSdeepseq-1.3.0.2-ghc7.8.3.so
linux-vdso.so.1 (0x00007fff09dfe000)
libgmp.so.10 => /usr/lib/libgmp.so.10 (0x00007fb8d3e96000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007fb8d3b91000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007fb8d3988000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fb8d3784000)
libffi.so.6 => /usr/lib/libffi.so.6 (0x00007fb8d357b000)
libHSarray-0.5.0.0-ghc7.8.3.so => /usr/lib/ghc-7.8.3/deepseq-1.3.0.2/../array-0.5.0.0/libHSarray-0.5.0.0-ghc7.8.3.so …
我试图使用git的预提交钩子.钩子如下所示:
#!/bin/bash
echo "fail"
exit 1
Run Code Online (Sandbox Code Playgroud)
因此,它总是会失败,即我的git提交应该失败.
如果我用git添加一些东西然后在命令行中提交它我很快就会失败并且我的提交失败了.
但是,如果我使用netbeans,我的预提交挂钩不会被执行.它似乎忽略了它.
我正在使用Ubuntu和Netbeans 7.1.预提交挂钩的权限是-rwxrwxrwx(为了测试目的,只需将其更改为777).
这怎么可能?
我有以下PHP代码,显示上传文件的mime类型.
<?php
if ($_POST) {
var_dump($_FILES);
$finfo = new finfo(FILEINFO_MIME_TYPE);
var_dump($finfo->file($_FILES['file']['tmp_name']));
} else{
?>
<form method="POST" enctype="multipart/form-data"><input name="file" type="file"><input name="submit" value="send" type="submit"/></form>
<?php
}
Run Code Online (Sandbox Code Playgroud)
使用此脚本上传somefile.csv的结果如下.
array (size=1)
'file' =>
array (size=5)
'name' => string 'somefile.csv' (length=12)
'type' => string 'text/csv' (length=8)
'tmp_name' => string '/tmp/phpKiwqtu' (length=14)
'error' => int 0
'size' => int 3561
string 'text/x-fortran' (length=14)
Run Code Online (Sandbox Code Playgroud)
所以mime类型当然应该是text/csv.但我使用的框架(Symfony 1.4)使用fileinfo的方法.
此外,我进一步测试了看起来命令(在Ubuntu上)file --mime-type somefile.csv返回somefile.csv: text/x-fortran并且命令mimetype somefile.csv返回somefile.csv: text/csv.somefile.csv是用MSOffice创建的(我不知道这是否重要).显然mimetype使用了一些很棒的mime数据库(http://freedesktop.org/wiki/Software/shared-mime-info),而file没有.