1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
/*
* ====================================================================
* Copyright (c) 2002-2009 The RapidSvn Group. All rights reserved.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program (in the file GPL.txt.
* If not, see <http://www.gnu.org/licenses/>.
*
* This software consists of voluntary contributions made by many
* individuals. For exact contribution history, see the revision
* history and logs, available at http://rapidsvn.tigris.org/.
* ====================================================================
*/
// wxWidgets
#include "wx/wx.h"
// svncpp
#include "svncpp/client.hpp"
#include "svncpp/path.hpp"
#include "svncpp/status_selection.hpp"
// app
#include "update_action.hpp"
#include "update_dlg.hpp"
#include "utils.hpp"
UpdateAction::UpdateAction(wxWindow * parent)
: Action(parent, _("Update"))
{
}
bool
UpdateAction::Prepare()
{
if (!Action::Prepare())
{
return false;
}
UpdateDlg dlg(GetParent(), _("Update"));
if (dlg.ShowModal() != wxID_OK)
{
return false;
}
m_data = dlg.GetData();
return true;
}
bool
UpdateAction::Perform()
{
svn::Revision revision(svn::Revision::HEAD);
// Did the user request a specific revision?:
if (!m_data.useLatest)
{
TrimString(m_data.revision);
if (!m_data.revision.IsEmpty())
{
svn_revnum_t revnum;
m_data.revision.ToLong(&revnum, 10); // If this fails, revnum is unchanged.
revision = svn::Revision(revnum);
}
}
const wxString & dir = Utf8ToLocal(GetPath().c_str());
if (!dir.empty())
wxSetWorkingDirectory(dir);
svn::Client client(GetContext());
client.update(GetTargets(), revision, m_data.recursive,
m_data.ignoreExternals);
return true;
}
bool
UpdateAction::CheckStatusSel(const svn::StatusSel & statusSel)
{
// no Update for repositories
if (statusSel.hasUrl())
return false;
// we NEED statusSel
if (0 == statusSel.size())
return false;
// No unversioned files allowed
if (statusSel.hasUnversioned())
return false;
return true;
}
/* -----------------------------------------------------------------
* local variables:
* eval: (load-file "../rapidsvn-dev.el")
* end:
*/
|