ubuntu搭建svn、git遇到的问题及解决办法
不错的git笔记博客:
http://www.cnblogs.com/wanqieddy/category/406859.html
http://blog.csdn.net/zxncvb/article/details/22153019
Git学习教程(六)Git日志
http://fsjoy.blog.51cto.com/318484/245261/
图解git
http://my.oschina.net/xdev/blog/114383
Git详解之三:Git分支
http://blog.jobbole.com/25877/
情况一、
svn: /opt/svndata/repos/conf/svnserve.conf:12: Option expected
权限配置:
#分组:
[groups]
group_admin = wws,aaa,bbb
group_user1 = sj,ccc
group_user2 = sy,dd,eeee
group_user3 = lxt
group_user4 = ss #设置对根(即SVN)目录下,所有版本库的访问权限
[/]
* = r #所有登录用户默认权限为只读
@group_admin = rw #可以分配给组,该组有读写权限
wws = rw #也可以像这样分配给指定用户 在修改配置文件(authz)后,客户端可能会报“Invalid authz configuration”的错误提示!
客户端没有提示错误原因,但在服务器端有一个方法,可以检查配置文件(authz)错在了哪里;
具体方法如下:
root@server:~# svnauthz-validate /data/svn/LQPLAY/conf/authz
svnauthz-validate: /data/svn/LQPLAY/conf/authz:167: Option must end with ':' or '='
它查出了是配置文件(authz)的第167行,出现了错误。
然后,可以用如下命令,编辑它并保存:
root@server:~# vi /data/svn/LQPLAY/conf/authz
Shift+: set number (显示行号)
Shift+: 167 (直接跳转到167行)
我发现是本该写为(gaojs = rw),不小心写成了(gaojs - rw)。
字母键(I-Insert),从浏览模式,切换到插入模式;
(Shift+:, 从浏览模式,切换到底行命令模式)
(Esc,从其他模式,退出到浏览模式)
修改后保存退出!
Shift+: wq (Write & Quit)
情况二、SVN的“Invalid authz configuration”错误的解决方法
转自:http://blog.csdn.net/gaojinshan/article/details/18218009
查看SVN的目录在哪里?
root@server:~# whereis svn
svn: /usr/bin/svn /usr/bin/X11/svn /usr/share/man/man1/svn.1.gz
查看SVN的进程是哪些?
root@server:~# ps aux | grep svn
root 1527 0.0 0.0 69640 1092 ? Ss 10:53 0:00 svnserve -d -r /data/svn/LQPLAY
root 5144 0.0 0.0 13592 936 pts/2 S+ 11:58 0:00 grep --color=auto svn
启动SVN的服务(-d:Deamon; -r:Root)
root@server:~# svnserve -d -r /data/svn/LQPLAY
查看SVN的服务是否正常(端口号3690是否存在)
root@server:~# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 1527/svnserve
1、checkout时,提示:URL svn://192.168.1.99/svntest doesn't exist...
奇怪,怎么会提示库不存在呢?肯定是哪里配置问题。后来尝试了半天,也在网上搜索了很久,终于发现问题所在。
如果你的svn库的路径为:/home/svn/svntest
那么你启动时,不能用命令:
svnserve -d -r /home/svn/svntest
而要用命令:
svnserve -d -r /home/svn/
2、commit时,提示:Authorization failed
开始一直以为是authz文件配置得不对,一直尝试,一直修改,还是不行,郁闷了。在确定authz的配置完全没问题后,开始查其它两个配置文件的问题。后来终于发现问题出在svnserve.conf这个文件。以下四行:
# anon-access = read
# auth-access = write
# password-db = passwd
# authz-db = authz
是被注释掉的,虽然文件说明里面说默认就是按注释掉的配置来执行,但好像并不是这样。放开注释:
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
问题解决。
PS:有些童鞋问文件上传到服务器后存放在服务器的哪个地方。
答:一般放在/home/svn/svntest/db/revs(根据我自己的目录结构)里面
svn: No repository found in 'svn:..解决方案
svn服务未启动或者是启动的时候未指定svn仓库路径
使用如下命令:
sudo svnserve -d -r /var/svn
后面的目录是你svn服务的仓库路径
另外要使用sudo取得管理员权限,否则可能在提交代码的时候出现权限问题
1、git commit
此时是进入GUN nano编辑器。在这里可以添加你的commit imformation 然后ctrl+o,回车保存,再ctrl+x退出。
因为对Nano编辑器很不熟悉,在这里我想将默认编辑器改为vim。打开.git/config文件,在core中添加 editor=vim即可。
或者运行命令 git config –global core.editor vim 修改更加方便。
2、git commit -a
把所有add了的文件都加入commit,然后进入编辑器编辑commit信息。
3、git commit -m “commit imformation”
直接在后面添加commit 信息然后提交commit,与gitcommit相比快捷方便,但是就是commit信息格式无法控制。
4、git commit --amend
修改最后一次commit的信息
git config运用
"remote:error:refusing to update checked out branch:refs/heads/master"的解决办法
在使用Git Push代码到数据仓库时,提示如下错误:
[remote rejected] master -> master (branch is currently checked out)
错误原型
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To git@192.168.1.X:/var/git.server/.../web
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'git@192.168.1.X:/var/git.server/.../web'
解决办法:
这是由于git默认拒绝了push操作,需要进行设置,修改.git/config文件后面添加如下代码:
[receive]
denyCurrentBranch = ignore
无法查看push后的git中文件的原因与解决方法
在初始化远程仓库时最好使用
git --bare init
而不要使用:git init
git init 和git --bare init 的具体区别:http://blog.haohtml.com/archives/12265
=================================================
如果使用了git init初始化,则远程仓库的目录下,也包含work tree,当本地仓库向远程仓库push时, 如果远程仓库正在push的分支上(如果当时不在push的分支,就没有问题), 那么push后的结果不会反应在work tree上, 也即在远程仓库的目录下对应的文件还是之前的内容。
解决方法:
必须得使用命令 git reset --hard 才能看到push后的内容.
研究了很久不得其解,然后找到一条命令凑合着能用了:
git config --bool core.bare true
就搞定了。
贴一段参考文章:
Create a bare GIT repository
A small rant: git is unable to create a normal bare repository by itself. Stupid git indeed.
To be precise, it is not possible to clone empty repositories. So an empty repository is a useless repository. Indeed, you normally create an empty repository and immediately fill it:
git init git add .
However, git add is not possible when you create a bare repository:
git --bare init git add .
gives an error "fatal: This operation must be run in a work tree".
You can't check it out either:
Initialized empty Git repository in /home/user/myrepos/.git/ fatal: http://repository.example.org/projects/myrepos.git/info/refs not found: did you run git update-server-info on the server? git --bare init git update-server-info # this creates the info/refs file chown -R <user>:<group> . # make sure others can update the repository
The solution is to create another repository elsewhere, add a file in that repository and, push it to the bare repository.
mkdir temp; cd temp git init touch .gitignore git add .gitignore git commit -m "Initial commit" git push <url or path of bare repository> master cd ..; rm -rf temp
转自:http://blog.csdn.net/rainysia/article/details/49463753
昨天打算把git diff 关联上bcompare作两个文件对比, 后来发现不怎么好用. 还要弹个gtk的窗口. 于是unset了后.
今天重新git diff的时候, 发现输入后没有任何反应. 就记录下怎么修复的
找了一台可以用git diff的机器, 随便echo 了一个多余的字符进已有的repository, 这里我们用strace来追踪执行过程.
#strace -f -e execve git diff
execve("/usr/bin/git", ["git", "diff"], [/* 45 vars */]) = 0
Process 27865 attached
[pid 27865] execve("/usr/lib/git-core/pager", ["pager"], [/* 49 vars */]) = -1 ENOENT (No such file or directory)
[pid 27865] execve("/usr/local/bin/pager", ["pager"], [/* 49 vars */]) = -1 ENOENT (No such file or directory)
[pid 27865] execve("/usr/bin/pager", ["pager"], [/* 49 vars */]) = 0
diff --git a/fabfile.py b/fabfile.py
index e53e07a..0974ee9 100644
--- a/fabfile.py
+++ b/fabfile.py
@@ -176,3 +176,4 @@ def test(version='', by='TAG'):
_push_rpm(rpmfile=rpmfile)
# done
return
+122
[pid 27865] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=27865, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
+++ exited with 0 +++
再看看不能执行的
#strace -f -e execve git diff
execve("/usr/bin/git", ["git", "diff"], [/* 44 vars */]) = 0
Process 20460 attached
[pid 20460] execve("/usr/lib/git-core/less", ["less"], [/* 47 vars */]) = -1 ENOENT (No such file or directory)
[pid 20460] execve("/usr/local/bin/less", ["less"], [/* 47 vars */]) = -1 ENOENT (No such file or directory)
[pid 20460] execve("/usr/bin/less", ["less"], [/* 47 vars */]) = 0
[pid 20460] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=20460, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
+++ exited with 0 +++
原来是正常的pager给换成了less.
这就简单了,找了下/etc/gitconfig. /root/.gitconfig, /home/username/.gitconfig 以及项目下的.git/config 都没有发现alias pager=less的. 看看git config –list 也没有定义.
想起来改过bashrc, 打开一看, 果然
export PAGER=less
删掉后重新加载terminal, git diff就恢复了正常.
Double Hyphens in Git Diff
Two months ago, I wrote my first list of Git commands, and said that I didn’t know how to use Git commands to view the changes.1
Now, I can understand how one can “use ‘--
’ to separate paths from revisions [or branches]”.
For example, if a developer relies on this Git cheatsheet for blogging with Octopress, then he/she will learn some Git commands, for example:
git diff <branch>
to view the uncommitted changes;git diff <path>
to show the uncommitted changes in files under<path>
.
Those commands should be enough for most cases. However, if he/she blogs with Octopress, then he/she will encounter the some problems:
git diff source
can’t view the uncommitted changes onsource
branch; (Click the linked post in footnote 1 for the error thrown by Git.)git diff source
can’t show the uncommitted changes in files undersource
folder.
In order to use git diff
to do the intended task, one has to avoid ambiguity.
- If necessary, one can use
--
to separate branch name(s) from file/path names; - 一个可以使用
./source
到平均source
文件夹。
$ git diff origin/source source
fatal: ambiguous argument 'source': both revision and filename
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
$ git diff origin/source source -- # correct command
$ git diff ./source # correct command
如果一个想要在 shell 命令中键入,其中一个可以考虑使用fugitive.vim: 在一个窗口由调用:Gst
,在修改后的文件在哪里显示的线按D
。
将本地test分支push到远程仓库上,如果远程没有就会创建
git push origin test
git checkout test -------》将远程的test分支下载到本地
git checkout -b aa origin/test -----》 将远程的test分支下载到本地,并且切换到本地
ubuntu搭建svn、git遇到的问题及解决办法的更多相关文章
- ubuntu搭建svn服务器并htpp访问版本库并svn与web同步
Ubuntu搭建SVN服务器多版本库 1 介绍 Subversion是一个自由,开源的版本控制系统,这个版本库就像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况.这样就可 ...
- dell r710 安装ubuntu 12.04 server 启动后进入initramfs解决办法
dell r710 安装ubuntu 12.04 server 启动后进入initramfs解决办法 grub 启动菜单后加入 rootdelay=90, 如下:/boot/vmlinuz-2.6.3 ...
- SVN Access to ‘/svn/Test/!svn/me’ forbidden,不能更新解决办法
今天上班,使用公司配置的电脑进行项目的更新.SVN报如下错误, SVN Access to '/svn/Test/!svn/me' forbidden,不能更新解决办法 很有意思: 开始以为自己的SV ...
- 【转】Ubuntu 上编译Android出现cannot find -lstdc++解决办法
[转]Ubuntu 上编译Android出现cannot find -lstdc++解决办法 在Ubuntu 12.04 x86_64机器上编译Android出现下面错误,是因为找不到32bit的li ...
- Git应用--04遇到冲突解决办法git stash(转载)
git merge git pull时候遇到冲突解决办法git stash https://www.cnblogs.com/juandx/p/5362723.html 在使用git pull代码时,经 ...
- ubuntu 搭建 svn服务器,使用http方式访问
原文: http://blog.csdn.net/wobuxingfang/article/details/70835414 参考:http://www.cnblogs.com/zzugyl/p/36 ...
- ubuntu 搭建svn服务器
1.安装Subversion sudo apt-get install subversion 2.创建资源库 cd /home/username/ svnserve -d -r /home/usern ...
- 【转】ubuntu源码编译安装php常见错误解决办法
./configure -prefix=/usr/local/php -with-config-file-path=/etc -with-mysql=mysqlnd -with-mysqli=mysq ...
- [svn]svn: E155015: 提交失败(细节如下) 解决办法
svn 出现冲突是经常发生的事,最近改用命令操作svn,用界面电脑有些反应慢 出现冲突使用svn 命令肯定也是可以解决的: 查看警告信息提示冲突的文件,执行 svn resolved <文件名& ...
随机推荐
- 【BZOJ】【4003】【JLOI2015】城池攻占
可并堆 QAQ改了一下午……最终弃疗求助zyf……居然被秒了QAQ真是弱到不行(zyf太神了Orz) 还是先考虑部分分的做法: 1.$n,m\leq 3000$:可以暴力模拟每个骑士的攻打过程,也可以 ...
- 【BZOJ】【1030】【JSOI2007】文本生成器
AC自动机/DP Orz ZYF 玛雅快要省选了,赶紧复(xue)习(xi)一下AC自动机…… 其实在AC自动机上DP并没有当初想的那么复杂……就是把DP的转移关系换成了AC自动机上的边而已(不过这题 ...
- 6-Highcharts曲线图之带标识
<!DOCTYPE> <html lang='en'> <head> <title>6-Highcharts曲线图之带标识</title> ...
- 大话C#之属性
前言 俗话说得好:工欲善其事,必先利其器.要想玩转OOP设计出一个优秀的类型,属性是必不可少的,那么我们今天就来说说c#中关于属性的二三事. 属性(property)分为无参属性(parameterl ...
- Working with LOBs in Oracle and PHP
原文链接:http://www.oracle.com/technetwork/articles/fuecks-lobs-095315.html Working with LOBs in Oracle ...
- Java Api与HBase交互实例
import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hb ...
- C/C++中内存区域划分大总结
C++作为一款C语言的升级版本,具有非常强大的功能.它不但能够支持各种程序设计风格,而且还具有C语言的所有功能.我们在这里为大家介绍的是其中一个比较重要的内容,C和C++内存区域的划分. 一. 在c中 ...
- javascript 关于函数的返回值
在javascript中根据调用方式的不同返回的内容也不同 1. 以函数的形式调用 当以函数的形式调用时, 返回值和函数定义时的 ruturn 有关, return的是数字就number类型, re ...
- win8系统输入法设置
Windows 8系统自带微软拼音简捷输入法,无论是在Windows的开始屏幕新界面中还是Windows传统桌面里,按Shift键或者直接点击屏幕上的"中/英"标识即可切换中英文输 ...
- Comet技术浅论
1.如何实现一个轮询? function getMessage(url,callback){ var XHR=new XMLHttpRequest(); XHR.open('get',url,true ...