- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在尝试克隆/镜像 GitHub 存储库时遇到了几个错误。我已经尝试通过本地 HTTPS 或服务器到服务器执行此操作(因此我可以将其热复制回我们的 SVN 服务器存储库)。我正在使用的 BASH 脚本应该转储 repo 失败并出现以下错误:
$ svnsync init file:///home/jdaniel/www/clone/rest https://github.com/ehime/Restful-MVC-Prototype
svnsync: E125005: Wrong or unexpected property value
svnsync: E125003: Bogus date$ svnsync sync file:///home/jdaniel/www/clone/rest https://github.com/ehime/Restful-MVC-Prototype
svnsync: E200007: The requested report is unknown.
我也尝试过使用 snvrdump
但遇到了类似的奇怪问题:
$ svnrdump dump https://github.com/ehime/CLI-Parser
SVN-fs-dump-format-version: 3
UUID: cfadd8e1-f89a-a5da-a424-ce57b7db7bff
Revision-number: 0
Prop-content-length: 163
Content-length: 163
K 10
git-commit
V 0
K 10
svn:author
V 0
K 8
svn:date
V 0
K 7
svn:log
V 0
K 25
svn:wc:ra_dav:version-url
V 39
/ehime/Restful-MVC-Prototype/!svn/bln/0
PROPS-END
* Dumped revision 0.
Revision-number: 1
Prop-content-length: 299
Content-length: 299
K 10
git-commit
V 40
ec089b697a5698f71d5edffb2f90b1385acbc53f
K 10
svn:author
V 5
ehime
K 8
svn:date
V 27
2013-08-16T17:16:26.000000Z
K 7
svn:log
V 61
Initial repository configuration with working hello world bs
K 25
svn:wc:ra_dav:version-url
V 39
/ehime/Restful-MVC-Prototype/!svn/bln/1
PROPS-END
svnrdump: E200007: The requested report is unknown.
这以相同的 Requested report is unknown
错误结束。
到目前为止,我测试过的所有 GitHub 存储库 (4-5) 都会抛出报告未知错误。请帮忙。
最佳答案
@SimonSobisch
根据 Simons 的要求,这是我最终编写的将 Subversion 移动到 GH 的脚本
#!/usr/local/env bash
# Converter for GitHub -> Subversion Repositories
# CPR : Jd Daniel :: Ehime-ken
# MOD : 2013-03-09 @ 16:26:53; 2017-01-31 @ 13:36:15 Simon Sobisch
# VER : Version 1c
# the Github SVN url to clone from
URL={THE_SVN_URL} # https://github.com/user/repo/
# the SVN url to clone to
REPO={THE_REPO_ROOT} in # svn+ssh://user@domain.com/api/svn_name
# the SVN structure
SVNTRUNK=${SVN_TRUNK-trunk}
SVNTAGS=${SVN_TAGS-tags}
SVNBRANCHES=${SVN_BRANCHES-branches}
# use the trunk, branch, etc... I'm using the trunk
SVN="${REPO}/$SVNTRUNK"
clear || cls; # set -x #debug
## if you want to burn and rebuild your repo, uncomment below
#
#echo "Burning Repo..."
#svn rm $REPO/{$SVNTRUNK,$SVNTAGS,$SVNBRANCHES} -m "Burning..."
#echo "Rebuilding Repo...."
#svn mkdir $REPO/{$SVNTRUNK,$SVNTAGS,$SVNBRANCHES} -m "Rebuilding..."
# cleanup
find -maxdepth 1 -type d ! -name '.*' |xargs rm -rf; # tmp
# dirs
SVN_FOLDER=`pwd`"/svn"
GIT_FOLDER=`pwd`"/git"
# revs
ENDREV=`svn info $URL |grep Revision: |awk '{print $2}'`
CURREV=1
mkdir -p $SVN_FOLDER $GIT_FOLDER
echo -e "\nLinking SVN repo\n"
cd $SVN_FOLDER
svn co $SVN .
echo -e "\nDownloading GIT repo\n"
cd $GIT_FOLDER
git svn init -s $URL \
-T $SVNTRUNK \
-t $SVNTAGS \
-b $SVNBRANCHES \
--prefix=svn/
# Set authors so we get prettier authors
if [ -f "../authors" ]; then
git config svn.authorsfile ../authors
fi
echo -e "\nFound ${ENDREV} revisions\n"
for (( REVISION=$CURREV; REVISION<$ENDREV+1; REVISION++ ))
do
cd $GIT_FOLDER
echo -e "\n---> FETCHING: ${REVISION}\n"
git svn fetch -r$REVISION; echo -e "\n"
git rebase `git svn find-rev r$REVISION`; echo -e "\n"
# STATUS: git log -p -1 `git svn find-rev r19` --pretty=format: --name-only --diff-filter=A | sort -u
ADD=$(git log -p -1 `git svn find-rev r$REVISION` --pretty=format: --name-only --diff-filter=A |awk '{printf "%s ", $1}')
MOD=$(git log -p -1 `git svn find-rev r$REVISION` --pretty=format: --name-only --diff-filter=M |awk '{printf "%s ", $1}')
DEL=$(git log -p -1 `git svn find-rev r$REVISION` --pretty=format: --name-only --diff-filter=D |awk '{printf "%s ", $1}')
# copy new files
for i in $ADD
do
cp --parents $i $SVN_FOLDER/
done
# copy modified files
for i in $MOD
do
cp --parents $i $SVN_FOLDER/
done
# set opts for SVN logging
HASH=$(git log -1 --pretty=format:'Hash: %h <%H>')
AUTHOR='Jd Daniel <dodomeki@gmail.com>' # or $(git log -1 --pretty="%cn <%cE>")
TMPDATE=$(git log -1 --pretty=%ad --date=iso8601)
DATE=$(date --date "$TMPDATE" -u +"%Y-%m-%dT%H:%M:%S.%N" |sed 's/.....$/Z/g')
LOGMSG=$(git log -1 --pretty=%s)
# move to svn
cd $SVN_FOLDER
# burn file if it exists....
if [ "$DEL" != "" ]; then
for i in $DEL
do
test -f $i && svn --force rm $i
done
fi
# first round of additions....
[ -z "$ADD" ] || svn --force add $ADD
[ -z "$MOD" ] || svn --force add $MOD
# try 2 for adding in case we missed ? files
ADDTRY=$(svn st . |grep "^?" |awk '{print $2}')
[ -z "$ADDTRY" ] || svn --force add $ADDTRY
# do commit
svn ci -m "$LOGMSG"$'\n\n'"$HASH"
# servers pre-revprop-change
# cp hooks/pre-revprop-change.tmpl pre-revprop-change; chmod +x pre-revprop-change
# if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:author" ]; then exit 0; fi
# if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:date" ]; then exit 0; fi
# echo "Changing revision properties other than svn:log, svn:author and svn:date is prohibited" >&2
# change this commits author and date
svn propset --revprop -r HEAD svn:author "$AUTHOR"
svn propset --revprop -r HEAD svn:date "$DATE"
done
exit
无论如何,git-svn 对此提供了很好的支持,只是在通常的 git svn clone 上略有不同。
我们使用略有不同的 parent/trunk|branches|tags/project
而不是标准的 project/trunk|branches|tags所以你会看到我指定了 -T/-t/-b
标志。
git svn init
这是我从现有的本地 git 存储库中所做的:
# Create the project directory in subversion
$ /usr/bin/svn mkdir
https://example.com/svn/parent/trunk/project
-m "Make project directory."
Committed revision 200.
# Initialize git-svn, doesn't fetch anything yet
$ git svn init https://example.com/svn/
-T parent/trunk/project
-t parent/tags/project
-b parent/branches/project
--prefix=svn/
# Set authors so we get prettier authors
$ git config svn.authorsfile ../authors
# Now pull down the svn commits
$ git svn fetch
W: Ignoring error from SVN, ...
W: Do not be alarmed at the above message git-svn ...
This may take a while on large repositories
r200 = (guid) (refs/remotes/svn/trunk)
# We should now see our svn trunk setup under our svn remote
$ git branch -av
* master c3a7161 The latest git commit.
remotes/svn/trunk 3b7fed6 Make project directory.
# Now we want to take all of our local commits and
# rebase them on top of the new svn/trunk
$ git rebase svn/trunk
First, rewinding head to replay your work on top of it...
Applying: First git commit
Applying: The latest git commit
# Now we should see our local commits applied
# on top of svn/trunk
$ git lg
* 52b7977 (HEAD, master) The latest git commit
* a34e162 First git commit
* 3b7fed6 (svn/trunk) Make project directory.
# Everything is cool, push it back to svn
$ git svn dcommit
Committing to https://example.com/svn/parent/trunk/project
...
–prefix=svn
我最近特别喜欢的一个标志是 --prefix=svn/
,您也可以将它与 git svn clone
一起使用。
这将为所有远程 Subversion 分支、标签和主干的跟踪分支加上 svn/前缀,使其看起来很像常规 git 远程使用的通常的 origin/习语。
跟踪分支有一个前缀,你也可以将它们用作本地分支名称,例如:
# Name your copy of svn/trunk "trunk" instead of "master"
$ git checkout -b trunk master
Switched to a new branch 'trunk'
$ git branch -d master
Deleted branch master (was 33c3136).
$ git branch -av
* trunk 33c3136 Latest svn commit
* remotes/svn/trunk 33c3136 Latest svn commit
然后,如果您有其他要跟踪的分支:
$ git checkout -b featurea svn/featurea
关于git - 通过 HTTP 转储远程基于 Git 的 SVN 存储库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18522284/
我时不时地输入“git”,然后想到别的东西,然后输入例如“git checkout master”。当然,这给我留下了 $ git git checkout master git: 'git' is
我做到了 git 克隆 git://foo.git 光盘富 ...编辑文件.. 现在我想重新开始。我不在乎我已经做出的任何改变,但我不想再次克隆整个巨型 foo.git,只是丢失我所有的更改。我怎
我在我的电脑上开发代码,我的计算节点很少。 为了让我的程序保持同步,我决定使用 git。以前,我以一种单向模式使用它来“下推”从 PC 到计算节点的更改。但是时不时遇到计算节点特有的小bug,现场修复
虽然它似乎什么也没做,但它没有给出任何警告或错误消息。有什么想法吗? 最佳答案 来自 Git 源的注释: /* * Read a directory tree. We currently ignor
我知道如何为这样的 HTTPS 请求提供用户名和密码: git clone https://username:password@remote 但我想知道如何像这样向 Remote 提供用户名和密码:
Git GUI、Git Bash 和 Git CMD 之间有什么区别?我是初学者,为了进行安装,我发现自己通常同时使用 git bash 和 git CMD 最佳答案 Git CMD 就像使用 git
有人能告诉我git中文件索引被删除是什么意思吗?这些文件在我的 VS Code 中标记为红色,但我仍然可以修改文件并将更改推送到将反射(reflect)这些更改的远程存储库。我认为这一切都是在我使用命
我通过 git 子树将 GLFV 库添加到项目中,但出现此警告“看起来您的 git 安装或您的 git-subtree 安装已损坏”。还描述了几个原因,为什么这可能是: 如 git --exec-pa
我有需要外部 git 项目的 repo,但我不想使用子模块,因为我想在 github 上存档所有文件,所以我认为我只是将具有 git repo 的整个目录添加到 git 但它不t 添加里面的 .git
我有需要外部 git 项目的 repo,但我不想使用子模块,因为我想在 github 上存档所有文件,所以我认为我只是将具有 git repo 的整个目录添加到 git 但它不t 添加里面的 .git
我一直在阅读一篇文章,作者在其中指示:在现有存储库中创建一个新存储库,并想知道这是否是他忽略的错误。稍后我会与他核实。 这些是我要检查的条件: 将现有目录制作成仓库的条件,并且已经 checkin 主
我确实在不同的计算机上处理相同的项目,我想知道是否有一种方法可以跟踪该 .git 文件夹,这样我就不必在所有本地文件中重新配置配置文件。 我将所有工作推送到 bitbucket。 最佳答案 不,没
这个问题在这里已经有了答案: How does git store files? (3 个答案) 关闭 9 年前。 我为我的许多项目创建了一个远程存储库,所以它是我的push 的目的地。与 git
应该如何在 git 中查看文件内容的完整历史记录? 一个文件在 git 中的历史很短,存储库通过 git-svn 同步,但在 svn 中的历史很长。 git 中的历史记录到达文件移动的位置。要查看历史
我是confused here ... 如何对修改后的文件进行git commit,以及如何对新文件进行git commit? 还有,你如何在git中单独提交文件? 最佳答案 git 提交过程分为两个
正在搜索 throw SO 来寻找答案。遇到这个似乎没有给出任何答案的旧线程。重新触发此线程,希望有人知道! 有人能告诉我 git subtree 和 git filter-branch 的区别吗?为
我想知道是否有一种方法可以避免在每个 Git 命令的开头键入单词 git。 如果有一种方法可以在打开命令提示符进入 “Git 模式” 后只使用一次 git 命令就好了。 例如: git> 之后,我们键
当您修改工作目录中的文件时,git 会告诉您使用“git add”暂存。 当您向工作目录添加新文件时,git 会告诉您使用“git add”开始跟踪。 我对这两个概念有点困惑,因为我假设跟踪文件的更改
为什么 git://有效 $ git clone git://github.com/schacon/grit.git Cloning into 'grit'... ... Checking conne
我在以下沙箱中练习 git:https://learngitbranching.js.org/?NODEMO 我在两个单独的 session 中运行了两组命令。第一组命令顺序如下: git clone
我是一名优秀的程序员,十分优秀!