我正在git pull通过root用户从任何目录尝试某个存储库.
例如,在执行git pull从/root/:
#> cd ~
#> sudo -u dmalikov git --git-dir=/home/dmalikov/path/to/repo/.git pull
/usr/libexec/git-core/git-sh-setup: line 142: cd: /root/.: Permission denied
Cannot chdir to /root/., the toplevel of the working tree
Run Code Online (Sandbox Code Playgroud)
并执行git pull来自/:
#> cd /
#> sudo -u dmalikov git --git-dir=/home/dmalikov/path/to/repo/.git pull
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)
为什么当前目录会影响git pull命令?
如何cd避免多余的?
我刚安装GVIM,浏览菜单,并更改了一堆设置.
我关闭了GVIM,设置全部丢失了.:(
我再次做出了改变.
现在我如何保留我的设置?
我想定义一个+-+在这里工作的运算符(调用它):
if a,b are Char => a +-+ b = [a][b]
if a,b are Integer => a +-+ b = a+b
Run Code Online (Sandbox Code Playgroud)
我尝试过:
class Summable a where
(+-+) :: a -> a -> b
instance Summable Integer where
a +-+ b = a + b
instance Summable Char where
a +-+ b = [a] ++ [b]
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误:
Couldn't match type `b' with `Integer'....
Couldn't match type `b' with `[Char]' ....
Run Code Online (Sandbox Code Playgroud)
是否有可能做到这一点?怎么样?
echo "a b _c d _e f" | sed 's/[ ]*_[a-z]\+//g'
结果将是a b d f.
现在,我怎么能把它转过来,只打印_c _e,而不假设其余部分?
在这一个人的头上划了一天.
我的代码中有一些函数看起来像这样:
function :: IO (Maybe Whatever)
function = do
monadFun
yaySomeIO
status <- maybeItWillFail
if checkStatus status -- Did we succeed?
then monadTime >>= return . Just . processItPurely
else return Nothing
Run Code Online (Sandbox Code Playgroud)
ghci将以交互方式加载和运行它,没有任何问题,ghc将愉快地编译它.然而,通过cabal运行这个给了我:
myProgram.hs:94:16:
Unexpected semi-colons in conditional:
if checkStatus status; then monadTime >>= return . Just . processItPurely; else return Nothing
Perhaps you meant to use -XDoAndIfThenElse?
Run Code Online (Sandbox Code Playgroud)
无论这个-XDoAndIfThenElse选项是什么,我似乎无法在任何文档中的任何地方找到它的痕迹.为什么是cabal(或者就此而言,这是什么?)对我使用IT首先放置的分号大吼大叫?或者在if-then-else语句中使用monadic表达式只是一个坏主意?
请注意,cabal根本没有抱怨这个:
case checkStatus status of
True -> monadTime >>= return . Just . processItPurely
_ -> return Nothing …Run Code Online (Sandbox Code Playgroud) 我在Windows上使用Git Shell(PowerShell模块).这是我安装Git for Windows时安装的那个.当我运行导致大量文本的命令时,例如git log我得到一页结果,然后在屏幕底部显示":".我想这是一个延续提示,因为我按下ENTER并获得另一个数据屏幕.在这种情况发生后,我通常无法恢复正常提示.我得到了(END)shell底部的文本,看起来它正在屏蔽我尝试输入的任何命令的前几个字符,它甚至看起来有点零星.我似乎无法弄明白.有任何想法吗?
我在集合上有等价关系 .如何构建等价类?它就是这样,但在所有元素之间,不仅仅是邻居.RAAgroupBy
例如,equal是等价关系(它是自反,对称和传递二元关系):
type Sometuple = (Int, Int, Int)
equal :: Sometuple -> Sometuple -> Bool
equal (_, x, _) (_, y, _) = x == y
Run Code Online (Sandbox Code Playgroud)
它实际上是连接2个Sometuple元素的谓词.
?> equal (1,2,3) (1,2,2)
True
Run Code Online (Sandbox Code Playgroud)
那么,我如何[Sometuple]基于equal谓词构建所有等价类?像这样的东西:
equivalenceClasses :: (Sometuple -> Sometuple -> Bool) -> [Sometuple] -> [[Sometuple]]
?> equivalenceClasses equal [(1,2,3), (2,1,4), (0,3,2), (9,2,1), (5,3,1), (1,3,1)]
[[(1,2,3),(9,2,1)],[(2,1,4)],[(0,3,2),(5,3,1),(1,3,2)]]
Run Code Online (Sandbox Code Playgroud) 我想将我的远程git存储库及其所有分支移动到新的远程存储库.
老遥远= git@github.com:thunderrabbit/thunderrabbit.github.com.git
新遥控= git@newhub.example.net:tr/tr.newrepo.git
如何wget从子shell进程获取退出代码?
所以,主要问题是$?等于0.哪里可以$?=8建立?
$> OUT=$( wget -q "http://budueba.com/net" | tee -a "file.txt" ); echo "$?"
0
Run Code Online (Sandbox Code Playgroud)
tee实际上它没有用.
$> OUT=$( wget -q "http://budueba.com/net" ); echo "$?"
8
Run Code Online (Sandbox Code Playgroud)
但是${PIPESTATUS}数组(我不确定它与那种情况有关)也不包含该值.
$> OUT=$( wget -q "http://budueba.com/net" | tee -a "file.txt" ); echo "${PIPESTATUS[1]}"
$> OUT=$( wget -q "http://budueba.com/net" | tee -a "file.txt" ); echo "${PIPESTATUS[0]}"
0
$> OUT=$( wget -q "http://budueba.com/net" | tee -a "file.txt" ); echo "${PIPESTATUS[-1]}"
0
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是 - 如何wget通过tee子shell …
我使用git子树添加而不使用squash选项将树合并到我的存储库中.git日志显示提交已成功添加到存储库.但是,如果我这样做git log --follow filename,则历史记录在合并时停止,并且不会显示先前的提交.我尝试使用-M而不是,--follow这也不起作用.如何在合并之前获取特定文件或文件的提交日志?