CloneDialog: Fixed incorrect parsing for local repositories

CloneDialog: Fixed incorrect missing suffix detection
We now pass local repository urls as local paths to fossil, in order to overcome buggy behavior of QUrl for Windows paths

FossilOrigin-Name: afa9b2538a0bfa258104a979eadce28c099e9848
This commit is contained in:
Kostas
2015-08-26 19:56:14 +00:00
parent 3d73fa7137
commit dc072a8219
4 changed files with 36 additions and 17 deletions

View File

@@ -49,11 +49,17 @@ bool CloneDialog::run(QWidget *parent, QUrl &url, QString &repository, QUrl &url
QString urltext = dlg.ui->lineURL->text();
url = QUrl::fromUserInput(urltext);
if(url.isEmpty() || !url.isValid())
// Check if the url is a local file
if(QFileInfo(urltext).exists())
url = QUrl::fromLocalFile(urltext);
else
{
QMessageBox::critical(parent, tr("Error"), tr("Invalid URL."), QMessageBox::Ok );
return false;
url = QUrl::fromUserInput(urltext);
if(url.isEmpty() || !url.isValid())
{
QMessageBox::critical(parent, tr("Error"), tr("Invalid URL."), QMessageBox::Ok );
return false;
}
}
if(!dlg.ui->lineUserName->text().trimmed().isEmpty())
@@ -94,7 +100,8 @@ void CloneDialog::GetRepositoryPath(QString &pathResult)
// Ensure that it ends in the required extension (On GTK, Qt doesn't seem to add it automatically)
QFileInfo fi(pathResult);
if(fi.suffix().toLower() != ("." FOSSIL_EXT))
QString ext = fi.suffix().toLower();
if(ext != FOSSIL_EXT)
pathResult += "." FOSSIL_EXT;
}

View File

@@ -137,11 +137,17 @@ bool Fossil::pushRepository(const QUrl &url)
if(!url.isEmpty())
{
params << url.toEncoded();
// QUrl generates bad local file url for Windows local paths with drive letters
if(url.isLocalFile())
params << url.toLocalFile();
else
params << url.toEncoded();
params << "--once";
QStringList log_params = params;
log_params[1] = UrlToStringDisplay(url);
if(!url.isLocalFile())
log_params[1] = UrlToStringDisplay(url);
log_params.push_front("fossil");
runFlags = RUNFLAGS_SILENT_INPUT;
@@ -161,11 +167,17 @@ bool Fossil::pullRepository(const QUrl &url)
if(!url.isEmpty())
{
params << url.toEncoded();
// QUrl generates bad local file url for Windows local paths with drive letters
if(url.isLocalFile())
params << url.toLocalFile();
else
params << url.toEncoded();
params << "--once";
QStringList log_params = params;
log_params[1] = UrlToStringDisplay(url);
if(!url.isLocalFile())
log_params[1] = UrlToStringDisplay(url);
log_params.push_front("fossil");