Version: 2.4.0 (using KDE KDE 3.5.0) Installed from: SuSE RPMs OS: Linux Cervisia can no longer commit a directory. When trying, a typical cvs message is e.g.: cvs -f commit -m '' '/home/roland/src-x86_64/c++/flexyp' 2>&1 Then after some output: Protocol error: 'Directory' missingE Protocol error: 'Directory' missingE Protocol error: 'Directory' missingE Protocol error: 'Directory' missingE Protocol error: 'Directory' missingE absolute pathname `/home/roland/src-x86_64/c++/flexyp/flexyp/ReperioIM' illegal for server which shows the problem, not all servers can handle absolute pathnames. This must have been changed in a recent version. It used to be that the commit command changed into the working directory and committed '.' as the directory which works perfectly fine. Btw. the cvs command from cervisia cut and pasted into a terminal doesn't work either. Please revert the change that caused this behaviour asap. Roland
The error is caused by CommitDialog::setFileList() were '.' is replaced by the absolute file path.
Christian, thanks for looking at this. Any chance this can be changed for 3.5.1? Roland --- Christian Loose <christian.loose@hamburg.de> wrote: [bugs.kde.org quoted mail] ---------------------------------------------------------------------------- > Severity|crash |normal > Status|NEW |ASSIGNED > > > > ------- Additional Comments From christian.loose hamburg de > 2005-11-29 10:49 ------- > The error is caused by CommitDialog::setFileList() were '.' is > replaced by the absolute file path. >
SVN commit 484207 by cloose: fix bug #117220: Don't try to commit absolute pathnames. This seems to cause problems for some cvs servers. BUG:117220 M +26 -9 commitdlg.cpp --- branches/KDE/3.5/kdesdk/cervisia/commitdlg.cpp #484206:484207 @@ -36,7 +36,23 @@ #include "diffdlg.h" -CommitDialog::CommitDialog(KConfig& cfg, CvsService_stub* service, +class CommitListItem : public QCheckListItem +{ +public: + CommitListItem(QListView* parent, const QString& text, const QString fileName) + : QCheckListItem(parent, text, QCheckListItem::CheckBox) + , m_fileName(fileName) + { + } + + QString fileName() const { return m_fileName; } + +private: + QString m_fileName; +}; + + +CommitDialog::CommitDialog(KConfig& cfg, CvsService_stub* service, QWidget *parent, const char *name) : KDialogBase(parent, name, true, i18n("CVS Commit"), Ok | Cancel | Help | User1, Ok, true) @@ -63,14 +79,14 @@ QLabel *archivelabel = new QLabel(i18n("Older &messages:"), mainWidget); layout->addWidget(archivelabel); - + combo = new QComboBox(mainWidget); archivelabel->setBuddy(combo); connect( combo, SIGNAL(activated(int)), this, SLOT(comboActivated(int)) ); // make sure that combobox is smaller than the screen combo->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed)); layout->addWidget(combo); - + QLabel *messagelabel = new QLabel(i18n("&Log message:"), mainWidget); layout->addWidget(messagelabel); @@ -90,7 +106,7 @@ setButtonGuiItem(User1, KGuiItem(i18n("&Diff"), "vcs_diff")); enableButton(User1, false); connect( this, SIGNAL(user1Clicked()), - this, SLOT(diffClicked()) ); + this, SLOT(diffClicked()) ); setHelp("commitingfiles"); @@ -120,7 +136,7 @@ QString text = (*it != "." ? *it : currentDirName); edit->compObj()->addItem(text); - QCheckListItem* item = new QCheckListItem(m_fileList, text, QCheckListItem::CheckBox); + CommitListItem* item = new CommitListItem(m_fileList, text, *it); item->setOn(true); } } @@ -133,7 +149,8 @@ QListViewItemIterator it(m_fileList, QListViewItemIterator::Checked); for( ; it.current(); ++it ) { - files.append(it.current()->text(0)); + CommitListItem* item = static_cast<CommitListItem*>(it.current()); + files.append(item->fileName()); } return files; @@ -229,15 +246,15 @@ void CommitDialog::showDiffDialog(const QString& fileName) { DiffDialog *l = new DiffDialog(partConfig, this, "diffdialog"); - + // disable diff button so user doesn't open the same diff several times (#83018) enableButton(User1, false); - + if (l->parseCvsDiff(cvsService, fileName, "", "")) l->show(); else delete l; - + // re-enable diff button enableButton(User1, true); }
*** Bug 119200 has been marked as a duplicate of this bug. ***
*** Bug 123873 has been marked as a duplicate of this bug. ***