Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从包含符号链接的GitHub存储库进行Subversion签出_Git_Github_Symlink_Svn - Fatal编程技术网

从包含符号链接的GitHub存储库进行Subversion签出

从包含符号链接的GitHub存储库进行Subversion签出,git,github,symlink,svn,Git,Github,Symlink,Svn,我有一个项目托管在GitHub上,我使用Git进行源代码版本控制 我必须在另一个平台上提取代码,但它不能有Git,所以我使用GitHub来签出代码,但它不处理符号链接 例如,在我的机器上有一个符号链接: sf -> ../lib/vendor/symfony/data/web/sf 但在远程平台上更新源代码时,我有: $ svn up # updating sources... $ cat sf ../lib/vendor/symfony/data/web/sf 有什么想法吗 更新 如

我有一个项目托管在GitHub上,我使用Git进行源代码版本控制

我必须在另一个平台上提取代码,但它不能有Git,所以我使用GitHub来签出代码,但它不处理符号链接

例如,在我的机器上有一个符号链接:

sf -> ../lib/vendor/symfony/data/web/sf
但在远程平台上更新源代码时,我有:

$ svn up
# updating sources...
$ cat sf
../lib/vendor/symfony/data/web/sf
有什么想法吗

更新


如果可能的话,我想避免使用脚本解决方案,其他开发人员也可以从Subversion中获取源代码。Subversion似乎可以处理符号链接,但以一种简单的方式

对于您的问题,您可以尝试将您的符号链接重新转换为真实的符号链接,例如,使用一些这样的脚本来显示未经测试的想法:

#!/usr/bin/env bash

file=$1
filecontent=`cat $1`
if [[ -f "$filecontent" ]]; then
  svn delete $file --force
  svn commit -m "Deleting broken symlink $file"
  svn update
  ln -s $filecontent $file
  svn add --force $file
  svn commit -m "Recreating broken symlink $file"
fi

svn指令序列来自。

这实际上是存储在历史记录中的指令序列。当Git在日志中看到此内容时,它实际上创建了一个符号链接,而不是像Subversion那样将其放入文件中。请参见entry.c:113以获取证据。在我看来,有两种解决方案:

GitHub必须检测到这是一个符号链接,并通过SVN接口以不同的方式表示该链接。 您必须在Subversion中使用某种post-receive钩子来本地检测这些文件,并用符号链接替换它们。不要实际接触远程存储库,否则Git端将出现问题。
更新:GitHub现已修复该问题。

GitHub的subversion支持已更新为处理符号链接

它适用于从带有符号链接的git回购中签出:

$ svn co https://github.com/nickh/repo_with_symlinks
...
A    repo_with_symlinks/trunk/app/lib/foo
A    repo_with_symlinks/trunk/app/lib/foo/bar.txt
A    repo_with_symlinks/trunk/foo
Checked out revision 1.

$ ls -al repo_with_symlinks/trunk/foo
lrwxr-xr-x  1 github  staff   11 Dec 23 23:11 foo -> app/lib/foo
从svn客户端提交符号链接时:

$ ln -s app/lib/foo/bar.txt bar.txt

$ svn add bar.txt
A         bar.txt

$ svn commit -m 'added a symlink'
Adding         trunk/bar.txt
Transmitting file data .
Committed revision 2.

您的解决方案可以工作,但我不想提交更改:这是一个git存储库,对github的subversion写入支持目前还不太稳定。是的,我注意到git以这种方式处理符号链接,github subversion支持似乎需要一些改进。非常感谢。不客气。另一方面,您可能希望看到core.symlinks变量:如果将其设置为false,则不会创建与这些文件对应的符号链接。