我几周前看过YouTube演示文稿Tech Talk:Linus Torvalds on git,似乎有一句话在我脑海中浮现.
在这个演讲中(大约33分钟),Linus说"有些人克隆SVN存储库,合并(= SVN中的头痛)然后将结果推回SVN".
我的想法是:如果这是可能的,那么为什么我们不把GIT的强大合并能力移植到SVN的一个组成部分?
这样我们对SVN进行了很大的改进,我们不必迁移我们的公司存储库和相关脚本,这些脚本可以连接到各种问题跟踪和持续集成系统.
我一定错过了什么.它是什么?
我试图克隆svn存储库时遇到以下错误.
有人见过这个吗?
$ git svn clone -s https://npanday.svn.codeplex.com/svn npanday
Initialized empty Git repository in /home/kurtharriger/npanday/.git/
fatal: Not a valid object name
ls-tree -r --name-only -z : command returned error: 128
$ git --version
git version 1.7.0.1
Run Code Online (Sandbox Code Playgroud) 我使用git-svn从工作中克隆了一个SVN存储库.在初始克隆期间,我提供了SVN作者文件.当我做初始克隆时,git将其设置authorsfile为绝对路径.但是,我在工作机器和笔记本电脑上保留了这个git存储库的副本,并使用unison保持副本同步(它们不是两个不同的克隆,而是同一个克隆).
我的git存储库的路径在工作机器和笔记本电脑上是不同的,这意味着在绝对路径无效的工作机器上找不到authors文件.将混帐svn的接受了相对路径authorsfile,相反,使作者的文件将总是可以找到,我可以安全地运行git svn rebase,并git snv dcommit从任一机?
我已经读过mv命令与...基本相同
$ mv README.txt README
$ git rm README.txt
$ git add README
Run Code Online (Sandbox Code Playgroud)
只是为了确定,如果我这样做,它是完全一样的:
$ git rm --cached README.txt
# [rename file using right click rename]
$ git add README
Run Code Online (Sandbox Code Playgroud) 我想开始使用GIT-SVN来处理SVN存储库.我知道使用GIT的许多好处仍然存在于GIT-SVN,如轻量级分支,以及改进的文件重命名/移动检测.
但我想知道是否有任何我应该注意的缺点?
我已经很久了,一个快乐的svn用户.最近我发现自己经常与我的存储库断开连接,因此我正在考虑切换到Git.
鉴于我在大多数这些项目中独自工作.我很想知道Git是否对小项目有点过分了?还有很多陷阱吗?有一个非常不同的工作流程或一个伟大的学习曲线?
我们将把我们的存储库从Subversion转换为Git,但是希望能够保留SVN修订版号,因为bug跟踪器中的注释会定期引用它.
我们将使用John Albin博客git svn clone中描述的流程.
有没有办法在提交消息中包含修订号?我宁愿在克隆期间这样做,但后处理步骤是可以接受的.
是的,我知道git svn find-rev,但这需要SVN存储库,用户可以通过网络访问它.
不想更改.gitignore,因为其他人想要回购中的文件.但是我有自己想要使用的副本.
我编辑.git/info/exclude并添加了以下内容:
/Gemfile
/Gemfile.lock
/config/database.yml
/spec/spec_helper.rb
Run Code Online (Sandbox Code Playgroud)
这似乎没有做任何事情.git status仍显示:
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: Gemfile
# modified: Gemfile.lock
# modified: config/database.yml
# modified: spec/spec_helper.rb
Run Code Online (Sandbox Code Playgroud)
在不使用.gitignore的情况下保留本地文件版本的最佳方法是什么?
我一直在研究如何将Git与SVN存储库一起使用,并且有许多参考使用以下命令:
git svn fetch --all
Run Code Online (Sandbox Code Playgroud)
但是,我还没有找到任何可以肯定地告诉我--all与的不同之处的参考git svn fetch,并且在git svn fetch使用或不使用该--all选项的情况下运行时都没有发现任何差异。有什么区别吗?
我正在使用Git 1.9.5。
(我发布这个问题的目的是为了自己回答这个问题,因为我在其他地方找不到答案.希望它能帮助遇到同样问题的其他人,下次我试图这样做时会帮助我.)
挑战
我想将SVN存储库转换为本地托管的gitlab GIT存储库并维护历史记录.
安装程序
Gitlab 8.5,Ubuntu 14.04 LTS,颠覆1.8.8
问题
使用git-svn或svn2git从svn转换为git的初始尝试导致以下错误.
错误
svn-remote.svn: remote ref '//example.com:81/svn/myrepository/trunk:refs/remotes/trunk' must start with 'refs/'
我试过的
我在下面的外部参考资料中都遵循了两个指南.
使用外部参考