SVN能否从linux下迁到windows下吗,如果能,需要注意哪些事项?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN能否从linux下迁到windows下吗,如果能,需要注意哪些事项?相关的知识,希望对你有一定的参考价值。

SVN上的数据怎样进行迁移

可以。
我试过直接把仓库拷来拷去,只要保持两边的svn服务的版本一致,用了几个月,还没有出现过问题。
另外就是用svnadmin dump和svnadmin load的方法来迁移,这方法对服务器版本一致性要求不严。
参考技术A 这很简单,你只需要备份SVN的配置库,备份好之后,在Windows下解压就好使用了。 参考技术B 这个我还没有试过。

估计版本的要求。

从 Linux 交叉编译到 Windows 时我应该如何处理字符编码?

【中文标题】从 Linux 交叉编译到 Windows 时我应该如何处理字符编码?【英文标题】:How should I handle character encoding when cross-compiling from Linux to Windows? 【发布时间】:2012-06-07 12:56:45 【问题描述】:

使用 mingw 从 Linux 交叉编译到 Windows 时,我应该如何处理字符编码/转换问题?


我正在尝试在 Linux 系统上为 Windows 目标交叉编译 Qt 项目。我已经安装(我相信是)所有必需的 mingw 包,并且我认为我的环境配置正确。但是,当我尝试配置 Qt 库时,尝试编译 project.cpp 时失败:

project.cpp: In member function 'QStringList& QMakeProject::values(const QString&, QMap<QString, QStringList>&)':
project.cpp:3062:51: error: cannot convert 'wchar_t*' to 'LPSTR aka char*' for argument '1' to 'WINBOOL GetComputerNameA(LPSTR, LPDWORD)'
gmake: *** [project.o] Error 1

我能够通过在代码中将wchar_t* 替换为LPSTR 来解决这个错误,但后来我又遇到了另一个错误。很明显,我现在面临字符编码问题。我想象可能有一些编译器选项可以正确处理转换(我正在查看fexec-charset),但我什至不确定这个问题。我知道LPSTR 之类的都是Microsoft typedef,但是在从Linux 交叉编译Windows 目标时,mingw 应该如何处理它们?

谢谢!


这是来自 qmake/project.cpp 的有问题的代码行:

DWORD name_length = 1024;
wchar_t name[1024];
if (GetComputerName(name, &name_length))
    ret = QString::fromWCharArray(name);

似乎GetComputerName 是一个正在扩展为GetComputerNameA 的宏,而显然我需要GetComputerNameW

【问题讨论】:

【参考方案1】:

默认情况下,几乎所有 Windows API 函数(例如 GetComputerName)都将解析为 ANSI 实现(例如 GetComputerNameA),而不是它们的宽字符变体(例如 GetComputerNameW)。

#include &lt;windows.h&gt; 之前尝试 #define UNICODE 或将宏作为参数传递给编译器。

有关详细信息,请参阅this 和 this。

【讨论】:

两者都有效,但我最终将其设置为配置选项。现在我有一大堆其他错误,但这个似乎已经解决了。谢谢。 @Ilian Pinzon 嗨,你能告诉我把#define UNICODE 放在哪里了吗?我正在 Windows 上编译(源 Qt5.2.1)。我得到了同样的错误project.cpp: In member function 'QStringList&amp; QMakeProject::values(const QString&amp;, QMap&lt;QString, QStringList&gt;&amp;)':【参考方案2】:

你需要使用宽版本的WINAPI函数:GetComputerNameA变成GetComputerNameW

Unicode 版本(又称“宽”)以W 为后缀,而 ANSI 版本以A 为后缀。它们分别接受 LPWSTRLPSTR 作为字符串参数(LPWSTR 是 wchar_t* 的别名)。

根据您的 unicode 配置,还有一些宏可以扩展为一个或另一个。示例见 msdn 文档:GetComputerName。

【讨论】:

嗯,我确实读过,但我正在尝试编译 Qt 库。为什么我需要修改代码?我不应该能够按原样编译吗?需要明确的是,我正在编译 Qt 的开源库 - 为所有平台打包的版本。 是的,它肯定应该开箱即用地编译。但是,您正在交叉编译,并且源代码可能是为 Windows mingw 安装量身定制的。如果这是一个选项,我会使用安装在 wine 下的 vanilla windows 来构建它。【参考方案3】:

你错误地配置了 Qt。

正确配置的 Qt 构建添加了 -DUNICODE -D_UNICODE(以及许多其他内容),可以解决您遇到的问题。

交叉编译 Qt 不是一件有趣的事,也不容易正确地完成。

【讨论】:

有趣的是,我刚刚注意到我一直使用的 qmake.conf 包含一行:“DEFINES = UNICODE ...”。在配置命令行中添加-DUNICODE 似乎没有任何效果。我可以通过定义CFLAGS = -DUNICODE 来让它工作。

以上是关于SVN能否从linux下迁到windows下吗,如果能,需要注意哪些事项?的主要内容,如果未能解决你的问题,请参考以下文章

我是刚到一个企业上班的新手,我以前没用过svn,请问怎么才能用最快的速度掌握它,能详细说下吗?

svn从Windows服务器上迁移到Linux上

svn从linux下迁移到windows中应该如何操作?两边的软件版本是不是需要一致?

MySQL数据库从windows迁移到linux

Linux命令能否运行在Windows上?

jenkins ios 自动化打包一定要在mac下吗